分页: 1 / 1

传输字符串数据时如何去掉中间的空格

发表于 : 2008-09-16 10:23
weihua2008
在socket网络编程时遇到了这样的问题,
在建立客户端和服务器端套接字并且连接成功后
当我想在一端发送象hello world等诸如此类的信息时在另一端接受两次才能把数据接受完
本来我发送的数据是:
hello world
在另一端显示是:
你接收到的数据是:hello
你接收到的数据是:world
就是在发送端输入数据的时候在数据中间用到了空格,导致不能一次接收完同一次发来的信息
高手们指教,象这样的问题,我想在接受端一次接收并打印出中间含有空格的数据该如何改进
谢谢

发表于 : 2008-09-16 10:34
health_kxy
代码贴出来看看

发表于 : 2008-09-16 10:44
weihua2008
health_kxy
创建epoll、注册socket、等待epoll事件就不用了吧
其中epoll_recv_fd是创建的epoll;cli_recv_sockfd注册的socket;recv_buff是接收数据的字符数组
if(recv_events.events&EPOLLIN)
{
int err=recv(cli_recv_sockfd,recv_buff,100,0);
if(-1==err){
fprintf(stderr,"读取数据失败%s\n",strerror(errno));

close(cli_recv_sockfd);
close(epoll_recv_fd);
_exit(0);
}else if (err==0){
perror(" 服务器已经断开,结束连接\n");

close(cli_recv_sockfd);
close(epoll_recv_fd);
_exit(0);
}
else{
recv_buff[err]='\0';
printf("接收到的数据为:%s\n",recv_buff);

}
}
}

发表于 : 2008-09-16 11:07
自由建客
发二进制不就完了

发表于 : 2008-09-16 11:14
health_kxy
recv用个循环读,直到你需要的数据完。比如发送端按\n结束,那么recv读到\n就停止。