C++ SOCKET通讯问题,求救! 本帖最后由 chen_bq 于 2014-04-26 09:04:51 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sendData为什么要加(char*)强制转换了?改为send(s,&sendData,,0);试试 c++中发送的结构体,如何把java接收到数据转成相应的结构体呢,这两者的数据结构体在内存中的位置是否相同,不然如何如何解析呢? 动态分配一个Buffer,然后把你要发的数据拷贝进去;char *buf = new char[xxx];char *phead = buf;int filenameLength...char *filename...int contentLength...char *content...memcpy(buf, (char*)filenameLength, 4);buf += 4;memcpy(buf, filename, filenameLength);buf += filenameLength;memcpy(buf, (char*)contentLength, 4);buf += 4;memcpy(buf, (char*)content, contentLength);buf += contentLength;send(s,(char*)phead, buf - phead); JVM是big-endian的,你的PC应该是little-endian的,网络字节序也是big-endian的,所以你发送的时候需要用htonl转换下字节序。 建议用字符型的通讯协议(如json或者xml),否则会后患无穷的 结构体包含指针,send会将指针本身的值发送过去,要想将指向的内容发送过去,必须将指针的内容拷贝到字符串中,在把字符串发送过去,这个问题我弄了好久才解决 不是字节序的问题吧,字节序是对基本数据类型,他都格式化成char* 了也就没有字节序的概念了 不是字节序的问题吧,字节序是对基本数据类型,他都格式化成char* 了也就没有字节序的概念了结构的前4字节还是int http://blog.csdn.net/caomiao2006/article/details/5395817可以参考一下的 我也觉得应该像6楼一样直接new出一块内存在,往里面写数据但是要将表示长度的4字节转换为网络字节序后再往里面写 初学者的一些问题? 数字图像处理 朱志刚译 习题答案 怎么用VC查找局域网共享文件夹 请问有无这样的延迟函数? 如何创建一个无标题的窗体,没用MFC 如何增加最大连接数? 寻找《com原理与应用》的源代码! 50分求一位图编程高手的伊妹儿 怎样将一个二进制文件以字符串的方式读入,然后再将字符串还原成二进制文件??? 一个不可思议的问题,望各位高手指教,我快急疯了 qt 串口接收十六进制数据问题,求大神解答。不甚感激。 多语言
char *buf = new char[xxx];
char *phead = buf;
int filenameLength...
char *filename...
int contentLength...
char *content...
memcpy(buf, (char*)filenameLength, 4);
buf += 4;
memcpy(buf, filename, filenameLength);
buf += filenameLength;
memcpy(buf, (char*)contentLength, 4);
buf += 4;
memcpy(buf, (char*)content, contentLength);
buf += contentLength;
send(s,(char*)phead, buf - phead);
不是字节序的问题吧,字节序是对基本数据类型,他都格式化成char* 了也就没有字节序的概念了
结构的前4字节还是int
可以参考一下的
但是要将表示长度的4字节转换为网络字节序后再往里面写