不知道哪位高人对两种语言的SOCKET编程熟悉
服务器用的是VC2003.net,客户端用的是VC6
建立连接正常
客户发送数据,服务器C#接收的ASCII编码正常
就是服务器在用ASCII编码后的数据发送给客户端时
如果客户端只接收一个char recmsg[4];
memset(recmsg,0,sizeof(char)*4);
recv(m_socket,recmsg,4,0);
如果服务器发送"0001"
客户端接收后用MessageBox显示recmsg居然是 0001?C
而且如果服务器如果先前接收过客户端发送的数据(比如"xyz")
再只发送"0001",客户端接收后用MessageBox显示的居然是 0001xyz但是如果把上边的recmsg[4]改成recmsg[64](把上边的4全替换为64)
用MessageBox显示却又正常 是 0001
虽然改成64后没有问题,但是始终想不明白为何4就是不行呢,而且明明收的是4位,怎么会显示
诸如0001?C 0001xyz这么多位呢
希望高手能给予解答,感激不尽,因为就是这个4害我困惑和调试了老长一段时间
服务器用的是VC2003.net,客户端用的是VC6
建立连接正常
客户发送数据,服务器C#接收的ASCII编码正常
就是服务器在用ASCII编码后的数据发送给客户端时
如果客户端只接收一个char recmsg[4];
memset(recmsg,0,sizeof(char)*4);
recv(m_socket,recmsg,4,0);
如果服务器发送"0001"
客户端接收后用MessageBox显示recmsg居然是 0001?C
而且如果服务器如果先前接收过客户端发送的数据(比如"xyz")
再只发送"0001",客户端接收后用MessageBox显示的居然是 0001xyz但是如果把上边的recmsg[4]改成recmsg[64](把上边的4全替换为64)
用MessageBox显示却又正常 是 0001
虽然改成64后没有问题,但是始终想不明白为何4就是不行呢,而且明明收的是4位,怎么会显示
诸如0001?C 0001xyz这么多位呢
希望高手能给予解答,感激不尽,因为就是这个4害我困惑和调试了老长一段时间
解决方案 »
- 做个日志系统的兄弟进来探讨下.
- vc 的这个板块,越来越有深度了, 哈哈, 4.5 年的开发经历, 看见 vccleaner 离职了,祝他 工作顺利
- 访问远程数据库,高手进
- 在程序中使用WinExec调用某应用程序的时候如何指定打开的位置
- 一个已经创建了实例得 远程DCOM对象,为何在访问它得方法得时候,得到结果 拒绝访问?(附源代码)
- 如何判断一个文件是文本文件还是二进制文件???
- 请教各位帮忙调试一下:http://www.codeguru.com/gdi/jt2draw.html这个例程,有关GDI+的?
- 关于全TCP连接扫描的几个问题
- 只有高手才懂得的关于EDIT输入框的问题!!请指教!!
- 我是菜鸟能帮我吗?!:)
- 将输入到editbox中的文本按行进行相应的处理
- 客户段和服务器代码
因为接收的数据,是按照字符串显示的,需要结束标志“\0”,你的大小只指定了4位,“\0”没有被正确接收,所以,显示到了下一个出现“\0”的位置。
指定64后,buffer足够大,就不会出现这个问题了。
改成char recmsg[5];试试