LINUX网络编程TCP服务器 客户端 有乱码怎么解决?

LINUX网络编程TCP服务器 客户端 有乱码怎么解决?,第1张

解决办法:

1.在客户端n=read(socketfd,buff,1023)代码之前加上memset(buff,0,sizeof(buff)),这是保证收到较短数据(使用TCP你不能保证每次接收的数据和发送的数据时等长的),打印也是正确的

2.将客户端buff[n+1]+='\0'修改为buff[n]='\0',这是因为n是下标,已经是最后一个位置了

3.将服务器端buff[n+1]+='\0'修改为buff[n]='\0',这是因为n是下标,已经是最后一个位置了,而且和第2)一样,那个加号也要去掉,应该是笔误吧

4.最大的问题,将服务器端write(connectfd,buff,1023),你怎么能够保证收到1023个字符呢?也应该将while中条件移出作为WHILE中的一条语句,而且加上前面所述的memset语句,而将这里的write(connectfd,buff,1023)修改为write(connectfd,buff,strlen(buff))。

祝共同进步!

解决办法:

1.在客户端n=read(socketfd,buff,1023)代码之前加上memset(buff,0,sizeof(buff)),这是保证收到较短数据(使用TCP你不能保证每次接收的数据和发送的数据时等长的),打印也是正确的;

2.将客户端buff[n+1]+='\0'修改为buff[n]='\0',这是因为n是下标,已经是最后一个位置了;

3.将服务器端buff[n+1]+='\0'修改为buff[n]='\0',这是因为n是下标,已经是最后一个位置了,而且和第2)一样,那个加号也要去掉,应该是笔误吧;

4.最大的问题,将服务器端write(connectfd,buff,1023),你怎么能够保证收到1023个字符呢?也应该将while中条件移出作为WHILE中的一条语句,而且加上前面所述的memset语句,而将这里的write(connectfd,buff,1023)修改为write(connectfd,buff,strlen(buff))。

祝共同进步!

Linux 网络编程是一个基于客户端/服务器(即:client/server)的套接字编程结构(即:socket 编程)。

在Linux网络编程的过程中,使用到的协议主要有:TCP/IP(基于连接的协议)、UDP(基于无连接的协议)、ICMP(通常我们在 DOS 状态下通过使用 ping 命令,检查网络的通断,就是依靠该协议)。

在Linux系统的套接字编程中,有标准的 socket( )、client( ) 代码的编写风格。涉及到的主要库函数有:bind( )、listen( )、accept( )、read( )、write( ) 等。

至于说要想学习详细的Linux网络编程技术实现细节,你可以参考《TCP/IP详解》一书。一套共三本。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6268828.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-19
下一篇2023-03-19

发表评论

登录后才能评论

评论列表(0条)

    保存