怎样给一个内网用户发UDP数据呢?解决方案

怎样给一个内网用户发UDP数据呢?
现在有两台电脑,一台电脑A有固定IP   202.114.112.23,另一台电脑B属于一个内网,其在内网中有IP   192.168.0.8,而这个内网通过一个IP为202.114.112.24的路由器与Internet相连。现在B给A发UDP数据可以收到,但A给B怎么样才能发送数据呢?

------解决方案--------------------
首先让B向A发,然后A再向b发送
------解决方案--------------------
B给A发过去后,A好象可以通过一结构获得其IP地址和端口号,然后再给B发信息
------解决方案--------------------
现在有两台电脑,一台电脑A有固定IP 202.114.112.23,另一台电脑B属于一个内网,其在内网中有IP 192.168.0.8,而这个内网通过一个IP为202.114.112.24的路由器与Internet相连。现在B给A发UDP数据可以收到,但A给B怎么样才能发送数据呢?

先让B发给A,A recv的时候就可以获取一个发送端的地址(IP+Port)
这个IP一定是他的对外地址202.114.112.24,Port应该是一个随机的高端地址
A直接向这个地址发就行了,202.114.112.24这个路由器收到后就会向B转发了

不过要注意的是在202.114.112.24这个路由器中,端口的映射是有是时间限制的
要是太久没有动作的话这个映射就会撤销
故,可以维护一个心跳包保持这个联系



------解决方案--------------------
if (((iRecLen=recvfrom(sockettol,pbuf,3000,0,(struct sockaddr*)&from,&fromlen))!=SOCKET_ERROR))
{
sendto(sockettol,buf1,500,0,(struct sockaddr*)&from,fromlen);


}