我想实现gprs模块(client)上网,和一个具有公网ip的计算机(Server)进行数据通信,想采用UDP协议。对UDP协议不太了解,现请教高手。
问题:gprs拨号获得的IP是动态的并且是内网IP,client 即使把这个IP传给server也没有用啊,server能用这个IP向它发送数据么??
看了网上的资料,有的说可以但涉及到端口变换的问题,有的说不行。晕了!大虾指教一下啊!!!
可不可以这样理解:
client 主动连server时将自己的端口、内网IP发送出去,并包含有通信服务商的网关IP。server端根据收到的信息发送回复时,实际是向网关ip和相应的端口发送数据,移动通信服务商再将端口映射到内网IP,就可以使server找到client了。
和我想法是完全一样的。
“server接收数据的时候会得到一个发送源的ip和端口信息(这并不是client的ip个端口,但你无需关心),然后server就往这个源回信息就ok了. ”这样我就清楚了。
我也用tcp做成功过。
但是tcp协议比较复杂,需要消耗比较多的内存,单片机没法做,只有使用嵌入式系统。
为了降低成本所以试试udp,udp协议简单多了,单片机就可以做了。
我做的系统都是client定时报,server不需要随时连接它,只在client连接以后发送数据时,对它回复一些信息。我想这样端口应该不会变得这么快吧!
多谢skylkj指教!