求助!SOCKET通信中怪现象! 本帖最后由 VisualEleven 于 2012-02-27 11:45:29 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我试试, 我想问问 是不是发送int数值 直接发过去是不是存在本地字节序和网络字节序问题? 难道我发送的东西也要手动转化为网络字节序? 字节序会让一个数从非零变成零?!应该是recv函数出错了!int iLinkNumber = 0 ;recv(SockClient ,(char*)&(iLinkNumber) , sizeof(int) , 0);把上面的0改为其它,比如100,如果结果还是iLinkNumber变成了0,才能说明你真的收到了0,如果保持100,说明你根本就没有收到数据。 网络编程中,也与是不是字符串无关!还是看看recv的返回值吧,如果没有出错(大于0),还得保证它等于4,这才证明你收全了。 这个已经去定了 我改为10 接受后依然是0 ;但是recv返回值确实是4继续求助?我感觉是网络字节的问题?但是我怎么把一个整型转换为网络字节?而且还有一个问题,我是在本地主机同时运行两个的 确定发字符串是没问题 请问发送的数据需要手动转换为网络字节吗?如果要转换,具体怎么转?为什么发字符串就没有问题?我可以很确定发送的时候确实是1 ,但是接收方收到就是0 返回值是4,表明确实是收到了一个INT 我也可以确定的告诉你 肯定不是字节序的问题.....假设int n = 1,char *pBuf = (char *)&n windows(小端)下是存的是 01 00 00 00这时候你把send(socket,pBuf,4,0)发出去的就是01 00 00 00这时候如果是linux(大端)下recv(socket,pBuf,4,0) 接收的是01 00 00 00 这时候n就不是1而是0x01000000;无论什么字节序都不是你现在这个结果 所以别在提字节序... 仔细看看自己的代码 别想当然... 自己用socktool分别测试服务端和接收端 就知道是那里出问题了 传送short\long数据时肯定要考虑字节顺序的,在传输之前要htonl转换下字符串则不用 把int格式化为字符串,然后发送。接收后用atoi啊 数据应该是正常收下来了。格式对应有问题,加上下面句试试:iLinkNumber=(iLinkNumber&0xff00)>>8; 请教各位一个问题..关于用CImage类去画png格式图片的问题... VC2005能通过DllMain函数得到当前DLL的模块句柄么? 请教颜色叠加的方法 请教,有关线程的悬挂与恢复 IWebBrowser 如何通过Invoke 获得 弹出窗口的URL ? WM_CHAR消息接收上下左右四个键 我用WavIn...录音,如何选择Mic, Line In, CD Audio这些方式? 请问谁有关于aiff文件格式的资料阿?大家帮忙!~~ 木马 什么是窗口子类化 Intel IPP那里有下载的? mfc activex中的VARIANT的返回值如何在html中调用啊?
难道我发送的东西也要手动转化为网络字节序?
recv(SockClient ,(char*)&(iLinkNumber) , sizeof(int) , 0);把上面的0改为其它,比如100,如果结果还是iLinkNumber变成了0,才能说明你真的收到了0,如果保持100,说明你根本就没有收到数据。
我改为10 接受后依然是0 ;但是recv返回值确实是4
继续求助?
我感觉是网络字节的问题?
但是我怎么把一个整型转换为网络字节?
而且还有一个问题,我是在本地主机同时运行两个的
确定发字符串是没问题
请问发送的数据需要手动转换为网络字节吗?
如果要转换,具体怎么转?
为什么发字符串就没有问题?我可以很确定发送的时候确实是1 ,但是接收方收到就是0 返回值是4,表明确实是收到了一个INT
字符串则不用
接收后用atoi啊