Code Bye

如何建立TCP和UDP连接

我是新手,最近项目需要建立一个TCP和UDP的连接。服务器都是基于windows的,大牛们能指点下我应该从几步着手在IOS上建立TCP和UDP连接吗?或者有源代码的更好。谢谢了

现在我已经通过GCDAsyncSocket 类创建了一个TCP连接,我的软件作为客户端,连接另一个服务器。我的客户端收服务器发的数据很流畅,但是我的客户端发给服务器的数据却有延时。我是8个字节8个字节发的数据。但是服务器收到都是96,104个字节这样收的。但是我在服务器上的另一个tcp客户端发送数据给服务器,服务器却收的很流畅,都是8个字节8个字节收的、在IOS中,GCDAsyncSocket类中怎么设置发送延时啊,有没这样的设置项
谁来回复回复啊,各位好心人,感激不尽
午夜了, 帮你顶一下吧, 其实我也不会, 只是顶一顶
GCDAsyncSocket
发送过快的时候有粘包现象
解决方案就是设置包头
TCP不是客户端发几次数据服务器端就接收几次数据,要以流的眼光来看待这些数据。通常的做法是在包头里面包含数据包的长度,然后接收端就可以根据这个信息读取指定长度的数据之后再将整个数据包提交给上层应用进行处理。
http://blog.csdn.net/tonny_guan/article/details/8803090这里有个相关的链接地址,你可以进去看看,或许能对你有帮助
引用 5 楼 iLdf 的回复:

TCP不是客户端发几次数据服务器端就接收几次数据,要以流的眼光来看待这些数据。通常的做法是在包头里面包含数据包的长度,然后接收端就可以根据这个信息读取指定长度的数据之后再将整个数据包提交给上层应用进行处理。

在吗。我用GCDAsyncSocket类实现的TCP连接,我是客户端,怎么在包头中设置数据包长度呢。能不能再指点下,这个问题困惑我快半个月了


30分
所谓的包头,其实就是在实际需要传输的数据之前添加的一些标识。GCDAsyncSocket只是一个数据通道。

包标识(固定长度)包长度(固定长度,包长度=包标识长度+包长度所占长度+包数据长度)包数据(不定长)
发送端按这个格式去封装数据包,接收端收到数据后按照这个格式去解析数据。
耗时操作建议另起线程去处理。

引用 8 楼 hslinux 的回复:

所谓的包头,其实就是在实际需要传输的数据之前添加的一些标识。GCDAsyncSocket只是一个数据通道。

包标识(固定长度)包长度(固定长度,包长度=包标识长度+包长度所占长度+包数据长度)包数据(不定长)
发送端按这个格式去封装数据包,接收端收到数据后按照这个格式去解析数据。
耗时操作建议另起线程去处理。

你的意思是在我发送的数据中加上数据长度什么之类的吗?我自己定的协议中有的,我到了那边也是自己按照协议拆开解析的。但是问题是我这边是19个字节一条命令发送的,而且是一个一个发的,但是到了接收的地方,直接就是几百个一起接收,我的界面刷新其实就用了这几百个字节的最后19个字节,所以就一卡一卡的,中间那些过程数据都没办法显示。

TCP本来就可能存在分包的呀,你程序一次发送的数据不一定会在另一方一次收到的。
我用这个GCDAsyncUdpSocket类,实现局域网内上传下载文件,只是单纯的点对点(把IP固定死)好做,可是我现在要实现获取对方设备的IP进行通信,怎么获取对方设备的IP

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何建立TCP和UDP连接