tcp/ip socket通信。typedef struct _tag_MyPack
{
DWORD len;
char *pdata;
}发送方先发len,四个字节,再发pdata指向的数据。接收方先读入四个字节,然后转换为DWORD,再根据这个长度读入其后的数据。通信开始是正确的,但是一段时间后会出错,我用sniffer工具查看了,出错是因为接收的数据与发送的数据根本不相符。
发送时的数据:00CC000400030001
接收得到数据:A600B7C600BFD600我觉得很奇怪,接收方和发送方都是windows2000操作系统,究竟是怎么回事呢?多谢多谢!
{
DWORD len;
char *pdata;
}发送方先发len,四个字节,再发pdata指向的数据。接收方先读入四个字节,然后转换为DWORD,再根据这个长度读入其后的数据。通信开始是正确的,但是一段时间后会出错,我用sniffer工具查看了,出错是因为接收的数据与发送的数据根本不相符。
发送时的数据:00CC000400030001
接收得到数据:A600B7C600BFD600我觉得很奇怪,接收方和发送方都是windows2000操作系统,究竟是怎么回事呢?多谢多谢!
解决方案 »
- 算是再麻烦诸位一次。。新手学VC++,只有C基础从哪里学起
- VC 控件
- RTF格式的文件解析为XML
- 查询mib表时为什么有的表每列要加上对象的oid,例如[1.3.6.1.2.1.4.20.1.1.127.0.0.1] ,而有的不加[1.3.6.1.2.1.4.1.0]
- 第一次写串口程序,请求帮助!
- CRecordSet的m_strFilter中使用double参数的问题。
- 急!!如何消除Dialog中控件的闪烁?
- 急急!!在CHtmlView的右键菜单上加上我的菜单
- 怎样用VC++实现远程控制?
- picture control添加一个位图后,如何实现在其他地方点击鼠标,picturecontrol在鼠标点击的地方出现,本人菜鸟级别,最好能够贴代码,谢谢
- socket通信收到的数据与发出的不相符。
- VC++ (int i)重定义
typedef struct _tag_MyPack
{
DWORD len;
char *pdata;
}
应该定义成:
typedef struct _tag_MyPack
{
DWORD len;
char pdata[1];
// 后面是data...
}
分配好空间,然后将你要发送的数据拷入pdata这个数组便可。