新人学习C++ CLient/Server 通信 信息传输不正确

找了个例子,通信功能是两个用户之间文字信息交流,在实现时,服务器发送给客户端的信息总是存在显示错误如图图片说明
这里是服务器程序中收发信息的部分
图片说明
这里是客户端收发信息的部分
图片说明

接收端数据长度设置有问题?可以加一句memset(s, 0, len);

你可以固定每次传输和接受数据的长度

你的程序中数据接收缓冲区的设置有问题,buf 的大小应该比实际接收的数据大小最少要大1。这样,是为了保证有字符串结束符。
如果 buf 有大小只有 5,又接收到了数据长度为5 的数据,这样导致没有结束符结束符 NULL。 在输出此字符串时,由于没有字符串结符,所以会输出乱码。这些乱码可能是随机数!

你使用strlen就不对。recv本身的函数返回值就是接收到数据的长度。
recv的接收内容可能会是'\0',那样的话你把应该要的数据截断了。在传送字符串的时候,send不会把ASCII0传出来所以你接收到的内容没有'\0',这样你会把不属于你的数据给显示了,而且可能产生段错误。

发送接收应该把数据都当成 BYTE数组来处理,而不是字符串,这样长度才能正确,接受后再按你需要转化成字符串或者别的数据。

接受尾部没加'\0'啊