C# socket通信,想在客户端进行实时监控服务端发来的数据,要求可以处理粘包问题
http://blog.csdn.net/binghuazh/article/details/4222516
只能贴了,没办法,讲起来太长。关键是你要设计自己的协议。
你有没有有关socket实用的例子,现在我这个项目用的比较急,我之前还没接触过socket
@Summay: 没有。
@Launcher:
谢谢你
不知道你的粘包是什么意思!
我也很久没写socket,具体实现技术细节不是记得很清楚了,但是可以分享下其中大的一些架构处理。
socket通讯模式上有2种,一个是短链接另外一个是长链接.
前者主要是用于移动端,因为socket一直不关闭会很耗设备电池。
如果客户端是移动设备,建议就采用短连接方式,其架构为 服务端需要启动2种线程,一个监听线程,一直等待客户端的连接请求,另外一个任务处理线程,处理任务池中的任务。客户端每次发送一个请求后,服务端的监听线程收到此连接请求后,启动一个独立线程,将此连接请求丢到一个任务池(队列)中,同时等待任务处理线程抓取此链接请求并做任务处理。处理完毕后,发送消息给客户端,同时断开此连接请求。
关于包的问题,需要双方协议上约定 每个包的发送大小,在发送数据之前都要获取此包的字节数,如果超过了约定的包大小,则需截包多次发送。为了保证数据的准确性,接受方需要在接受到数据后做出验证。
如果客户端不是移动终端,则第一次链接上后,往复的请求后不要关闭套接字即可。
谢谢你
加4位长度的包头表示数据大小,我们公司这样处理的
谢谢你
最讨厌没事乱起名词,装
粘包问题一直存在的,我对你不想说什么,如果你不懂你可以上网去查。