连接-TCP通信的数据格式该怎么定义???

问题描述

TCP通信的数据格式该怎么定义???

请问TCP长连接该怎么定义什么样的数据格式才不会粘包呢?大牛们请指教!谢谢!

解决方案

粘包没关系,只要能正确拆包就行。比如约定:
发送,先发4个字节表述数据的长度,再发数据。
接受,先接受4个取得长度,再按长度读取数据。剩下的就是下个包的。

解决方案二:

自己定义包的结构,里面定义字段定义包的长度等,收到数据后,根据协议解析数据包等

时间: 2016-02-22

连接-TCP通信的数据格式该怎么定义???的相关文章

.NET可复用TCP通信层之消息分派器组件

上一篇主要讲到了Tcp通信层中的核心组件――Tcp组件的实现,Tcp组件是整个通信层的消息驱动源,甚至,可以将Tcp组件看作是我们整个服务器系统的消息驱动源,消息处理过程从这里引发.类似的消息驱动源还有发布的WebService接口.Remoting接口等.今天我们需要关注的是Tcp通信层中的"中央"组件――消息分派器组件ITcpReqStreamDispatcher,大家已经从前文的组件关系图中看到了消息分派器的大致位置和作用了,它是Tcp通信组件和消息处理器之间的"桥梁&

.NET下可复用的TCP通信层实现之TCP组件

    2006年已经来临,回首刚走过的2005,心中感慨万千.在人生和生活的目标上,有了清晰明确的定位,终于知道了自己喜欢什么样的生活,喜欢什么样的生活方式:在技术上,成熟了不少,眼界也开阔的不少,从面向对象到组件.从.Net到J2EE.从微软到开源,颇有收获.特别值得一提的是,认识了Rod Johnson这个大牛人,也终于在自己的项目中正式使用Spring.net框架来开发了,这确实是一个优秀的框架.而在已经到来的2006年,我有一个主要目标就是B/S应用开发,来填补自己在企业级开发上的另一

Linux下TCP通信简单实例

基于TCP(面向连接)的socket编程,分为服务器端和客户端 服务器端的流程如下: (1)创建套接字(socket) (2)将套接字绑定到一个本地地址和端口上(bind) (3)将套接字设为监听模式,准备接收客户端请求(listen) (4)等待客户请求到来:当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept) (5)用返回的套接字和客户端进行通信(send/recv) (6)返回,等待另一个客户请求. (7)关闭套接字. 客户端的流程如下: (1)创建套接字(soc

Linux TCP通信出现CLOSE_WAIT后导致服务端进程挂掉

在前文中讲述了Linux服务端TCP通信出现CLOSE_WAIT状态的原因,这篇文章主要通过一个实例演示它个一个"恶劣"影响:直接使服务端进程Down掉. CentOS服务端建立监听端口 1 CentOS服务端建立监听端口 如上图所示,在虚拟机CentOS7服务器(192.168.1.178)中打开一个终端界面,建立8000端口的监听服务(PID:13035).所用代码如下,和上一篇文章中的程序大体一样,只是多了一个SIGPIPE信号处理以及自动回复(Auto response fro

.NET平台下可复用的Tcp通信层实现(续)

     上一篇主要讲到了Tcp通信层中的核心组件――Tcp组件的实现,Tcp组件是整个通信层的消息驱动源,甚至,可以将Tcp组件看作是我们整个服务器系统的消息驱动源,消息处理过程从这里引发.类似的消息驱动源还有发布的WebService接口.Remoting接口等.今天我们需要关注的是Tcp通信层中的"中央"组件――消息分派器组件ITcpReqStreamDispatcher,大家已经从前文的组件关系图中看到了消息分派器的大致位置和作用了,它是Tcp通信组件和消息处理器之间的&quo

.NET平台下可复用的Tcp通信层实现

    2006年已经来临,回首刚走过的2005,心中感慨万千.在人生和生活的目标上,有了清晰明确的定位,终于知道了自己喜欢什么样的生活,喜欢什么样的生活方式:在技术上,成熟了不少,眼界也开阔的不少,从面向对象到组件.从.Net到J2EE.从微软到开源,颇有收获.特别值得一提的是,认识了Rod Johnson这个大牛人,也终于在自己的项目中正式使用Spring.net框架来开发了,这确实是一个优秀的框架.而在已经到来的2006年,我有一个主要目标就是B/S应用开发,来填补自己在企业级开发上的另一

两地局域网都接在互联网上,怎么实现两地udp/tcp通信

问题描述 求高手解答,需要在路由上做端口映射吗? 解决方案 解决方案二:应该需要的,6个字真麻烦解决方案三:两端都需要端口映射解决方案四:引用2楼zhouqinghe24的回复: 两端都需要端口映射 映射端口号一致是吧,然后使用winsock控件绑定的IP就是内网IP,端口号是映射端口吗?还是采用其他方法,我看他们FTP通信的.求思路解决方案五:引用1楼xdashewan的回复: 应该需要的,6个字真麻烦 除了winsock控件的tcp/udp还有别的通信方式吗解决方案六:引用1楼xdashew

TCP通信socket异步,客户端报异常:目标主机积极拒绝

问题描述 TCP通信socket异步,客户端报异常:目标主机积极拒绝 服务端只监听时,客户端建立1500个连接请求都可以正常建立连接,但当服务端改成建立连接后触发一个事件给客户端发送数据时,客户端异常:目标主机积极拒绝,只能建立部分连接.是何原因,希望有老师可以指点一下.不胜感激!! 解决方案 Socket(Tcp)通信客户端 解决方案二: 客户端接收的数据是否正确处理,然后就是看一下你服务器发送数据给客户端后,是不是关闭了连接

多线程-VC++孙鑫第十五课聊天室程序,如何有UDP改成TCP通信

问题描述 VC++孙鑫第十五课聊天室程序,如何有UDP改成TCP通信 看了孙鑫的第十五课:<多线程和聊天室程序的创建>,对其中的聊天室UDP程序中不断接收数据部分比较感兴趣,想把它改成TCP的版本,但是出现了不少问题不知道该怎么解决. 改动部分如下: 1.在InitSocket()中添加了listen和accept函数 2.由于TCP中连上之后发送数据需要使用accept获得的套接字,所以在OnInitDialog()中定义pRecvParam->sock=m_client; pRecv