SOCKET问题,大虾指教! 因为发送数据实际上由操作系统控制,你Send后,不一定真实的发送出去,具体发送由系统调度。向上所述,一定会出现你所说现象,解决方法就是定为一个数据发送协议,如:头“7e"1B,信息长度 4B Long型,信息,结束标志 1B 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呢用的肯定是tcp协议,需要自己来保证数据报的完整,最简单的办法定义一个结构typedef struct { DWORD dwLen; //你发的数据包的长度 BYTE * pData; //实际数据}接受数据时,先读出长度,然后需要自己判断,如果不是一个完整的数据报则先放在一个缓存里可以,还有一些细节性的东西要注意一下就可以了 to:meteorshower(流星宇) 还有什么细节问题?用 UDP协议和TCP有什么不同吗? 做应用层协议的时候需要分清楚网络层数据包和应用层数据包,网络层数据包的定界和应用层数据包的定界是不一样的,在应用层需要自己去定界,不能利用网络层的定界,否则就会出错。一个应用层定界的例子:在http协议中,以此应用层会话分两个部分,应用层协议头部,和应用层协议内容头部的结束标记是"\r\n\r\n",应用层内容部分的结束标记通过协议头部的表示来决定。协议头部有内容长度的标识,根据这个表示就可以确定本次会话到什么时候结束。smpt协议中结束标记是\r\n,非常类似。 在传送路径上有一个最大传送单元(MTU),包长度超过此值就会被分片。有一些手段可以找出路径MTU,以太网上一般不超过1500。 我用SOCKET,大概是在网络层上吧。你们说的过于深奥,我实在不是很明白,我想知道用TCP 传送,和用UDP传送都回遇到这个问题吗? MTU 的问题吧!大的数据报必然被拆开 方法?方法不是大家都说了么?1。用UDP协议,UDP协议本身保证数据包的完整性,你不必操心——但包的顺序它不保证;2。用TCP协议,需要自己定义更高层的协议实现数据包传送,例如给包头加入“包大小”之类的字段,这种情况“包”的顺序可以保证,但分包、组包的工作必须你自己用程序完成。 加载一张图片变灰色并加上半透明效果怎么不行呢? iSCSI客户端开发 如何动态禁用某一菜单项????????? 关于vc 调用Excel 2000的问题 请教:做ActiveX控件的时候,有种方法把数据写入注册表,请帮忙! 请教:这样调用selectstring\findstring 为什么出错? 写入文件时fprintf(m_file,"%s",m_strOneLine);语句产生中断 怎样显示文本?? 如何让鼠标在屏幕上(包括程序窗口外面)自己动 mfc中ansi和unicode的疑问 谁知道文字反锯齿的实现方法。 用csocket类,如何把接收设为阻塞方式
typedef struct
{
DWORD dwLen; //你发的数据包的长度
BYTE * pData; //实际数据
}接受数据时,先读出长度,然后需要自己判断,如果不是一个完整的数据报则先放在一个缓存里可以,还有一些细节性的东西要注意一下就可以了
meteorshower(流星宇)
还有什么细节问题?
用
UDP协议和TCP有什么不同吗?
不能利用网络层的定界,否则就会出错。一个应用层定界的例子:
在http协议中,以此应用层会话分两个部分,应用层协议头部,和应用层协议内容
头部的结束标记是"\r\n\r\n",
应用层内容部分的结束标记通过协议头部的表示来决定。
协议头部有内容长度的标识,根据这个表示就可以确定本次会话到什么时候结束。smpt协议中结束标记是\r\n,非常类似。
你们说的过于深奥,我实在不是很明白,
我想知道用TCP 传送,和用UDP传送都回遇到这个问题吗?
1。用UDP协议,UDP协议本身保证数据包的完整性,你不必操心——但包的顺序它不保证;
2。用TCP协议,需要自己定义更高层的协议实现数据包传送,例如给包头加入“包大小”之类的字段,这种情况“包”的顺序可以保证,但分包、组包的工作必须你自己用程序完成。