当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 传输字符串数据时如何去掉中间的空格
帖子发表于 : 2008-09-16 10:23 

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


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-09-16 10:34 

注册: 2006-08-28 23:21
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
代码贴出来看看


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-09-16 10:44 

注册: 2008-07-10 15:08
帖子: 448
送出感谢: 0 次
接收感谢: 0 次
health_kxy
创建epoll、注册socket、等待epoll事件就不用了吧
其中epoll_recv_fd是创建的epoll;cli_recv_sockfd注册的socket;recv_buff是接收数据的字符数组
if(recv_events[i].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);

}
}
}


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-09-16 11:07 
头像

注册: 2008-07-30 23:21
帖子: 13225
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 36
接收感谢: 121
发二进制不就完了


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-09-16 11:14 

注册: 2006-08-28 23:21
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
recv用个循环读,直到你需要的数据完。比如发送端按\n结束,那么recv读到\n就停止。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译