我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > C/C++星空(中国) > 关于socket和dup2的一个问题,非常奇怪,希望能得到答案
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

关于socket和dup2的一个问题,非常奇怪,希望能得到答案

118浏览 / 1回复

87
精华
87
帖子

等  级:Lv.1
经  验:50
  • Z金豆:

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:
  • 注  册:
  • 登  录:
发表于 2008-12-23 09:28:24
电梯直达 确定
楼主
本人写了一个socket程序,收发信息均没有问题。今天网上看到有人从客户端发送消息的时候不用send函数,而是用dup2把客户端的socket复制到标准输出,然后利用printf之类的函数输出的信息均能发送到服务端。对此本人也做了测试,可以实现。部分代码如下:
      
/*将标准输出替换为sock*/
dup2( sock, 1 );
printf("aaaaan");
但是,我想通过在客户端从键盘输入,然后再将这个字符串利用重定向后的标准输出发送到服务端,服务端却总是收不到。代码如下:
/*读取键盘输入,将读到的字符串通过重新定义的标准输出发送到服务端*/
dup2(sock, 1);
while( fgets( linebuf, 1024, stdin ) != NULL )
{
                    linebuf[strlen(linebuf)-1] = '';
                    printf("%sn", linebuf);
 }

请问大家为什么呢,在我看来这两种方式没什么区别啊


精华

帖子

等  级:Lv.1
经  验:0
发表于 2008-12-23 09:28:24 1楼
你对dup2的理解有误....man dup2看看两个参数是什么意思,而你在客户端用的dup2和服务器端一样的,怎么能有正确的结果呢.
高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表