
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))。
祝共同进步!在服务器上要开发一个TCP服务端,功能是维护在线客户端列表、处理客户端(假设为客户1)连接请求,将客户1的请求推送到客户2,根据客户2 的响应决定是不是在客户1和2之间建立应用连接,一旦应用连接建立,服务端就持续交换转发客户1、2的数据,直到其中一方断开,这是所有数据都通过服务器中转的方式;还有一种方式服务端仅仅维护在线用户列表,客户端相互直接连接,数据不通过服务器中转,具体实现还有许多细节需要处理,希望能够帮到你。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)