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

C、C++和Java语言
回复
weihua2008
帖子: 448
注册时间: 2008-07-10 15:08
送出感谢: 0
接收感谢: 0
联系:

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

#1

帖子 weihua2008 » 2008-09-16 10:23

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

#2

帖子 health_kxy » 2008-09-16 10:34

代码贴出来看看
weihua2008
帖子: 448
注册时间: 2008-07-10 15:08
送出感谢: 0
接收感谢: 0
联系:

#3

帖子 weihua2008 » 2008-09-16 10:44

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);

}
}
}
头像
自由建客
论坛版主
帖子: 13445
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 112 次
联系:

#4

帖子 自由建客 » 2008-09-16 11:07

发二进制不就完了
health_kxy
帖子: 30
注册时间: 2006-08-28 23:21
送出感谢: 0
接收感谢: 0

#5

帖子 health_kxy » 2008-09-16 11:14

recv用个循环读,直到你需要的数据完。比如发送端按\n结束,那么recv读到\n就停止。
回复

回到 “C/C++/Java”