关于使用TCP协议的问题
用GPRS连接internet,给后台服务器发送图片,图片大小在100K以内,用TCP协议传输,由于GPRS模块每次发送的数据在2K以内,所以采用分包发送。我在图片数组前添加拍摄图片的时间和图片长度。
我想问的是,100K的数据量,在使用TCP传输时,会不会丢包?分包发送时,需要为每个包再另外加包头吗?包头里添加整个图片的大小,每个包的数据长度信息。怎么样才能保证TCP传输不丢包? tcp gprs 图片
[解决办法]
分包发送,每包加上引导头、发送序号和校验和,接收端接收后回传。这样做比较保险
[解决办法]
如果是移植的tcp协议栈,使用上层API,那么里面的细节部分就不用考虑了。直接把人为分包的数据作为参数传进去,那么收到的就是正确的数据。如果担心中途网络有问题,是指环境问题或者链接问题。可以为每个包再加包头,添加包序列号参数、数据长度等。在收数据的时候检查这些参数。添加重传机制,或者最后再来个数据校验,这样应该能保证传输的正确性。
100%的保证,我觉得是人为实现的高可靠性的表现。
[解决办法]
udp不能识别网络状态吧。
我用过网线,tcp面向连接,如果握手不成功是不会建立连接的。而且以太网控制器可以识别物理链路断开。udp就不管连接是否建立,不管对方的网络是否正常,udp只负责向设定的ip地址和端口发送。
若使用udp自己加上应答报文的话,即发一包,对方给一包应答,也可以完成这个过程。
楼主为什么会局的使用UDP会更好些?
[解决办法]