免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3015 | 回复: 19
打印 上一主题 下一主题

accept的问题,求助! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-28 17:14 |只看该作者 |倒序浏览
环境:  一个linux c 的服务器,一个win vc 的客户端,另一个win vb 的客户端;
问题:
1、accept 返回 0
    vc 的客户端使用都很正常;而vb的客户端使用时,服务器accept会返回0
    很奇怪怎么会得到 STDIN 的默认描述符呢(没有关闭的)?

2、文件描述符0上,接收正常,发送有时失败
     使用vb 的客户端,accept 得到 0, 服务端能接收客户端消息,但是发送失败: Bad file descriptor
     之后再使用 vc 的客户端, 同样还是0,但此时服务端接收、发送都时成功
    (其间服务端没有重启)


到底怎么回事呢?太奇怪了

代码在第10贴

[ 本帖最后由 andyY 于 2007-3-28 19:43 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-03-28 17:20 |只看该作者
accept,第三个参数,注意一下

论坛徽章:
0
3 [报告]
发表于 2007-03-28 17:24 |只看该作者
你是不是把标准输入关闭了?

论坛徽章:
0
4 [报告]
发表于 2007-03-28 17:49 |只看该作者
在前面有定义的


  1.   ...
  2.   struct sockaddr_in *peer;
  3.   struct sockaddr_in peer_;
  4.   socklen_t *len;
  5.   socklen_t len_;

  6.   if( NULL==addr )  //输入的参数,指针类型
  7.   {
  8.     peer = NULL;
  9.     len = NULL;
  10.   }
  11.   else
  12.   {
  13.     peer = &peer_;
  14.     len = &len_;
  15.   }

  16.   ...
  17.   while(true)
  18.   {
  19.      ....
  20.   }
复制代码


程序里标准输入从来没有关闭过。。。

[ 本帖最后由 andyY 于 2007-3-28 17:51 编辑 ]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2007-03-28 17:51 |只看该作者
原帖由 net_robber 于 2007-3-28 17:20 发表
accept,第三个参数,注意一下



楼主看这个回复就够了。

重新去man

&len;

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2007-03-28 17:51 |只看该作者
原帖由 andyY 于 2007-3-28 17:49 发表
在前面有定义的
  [CODE]

  ...
  struct sockaddr_in *peer;
  struct sockaddr_in peer_;
  socklen_t *len;
  socklen_t len_;

  if( NULL==addr )  //输入的参数,指针类型
  {
    peer = NUL ...

我倒很有兴趣了解一下你这俩指针都指向什么地方了?
这种写法我还是第一次见……

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2007-03-28 17:52 |只看该作者
  1.   struct sockaddr_in *peer;
  2.   struct sockaddr_in peer_;
  3.   socklen_t *len;
  4.   socklen_t len_;

  5.     peer = &peer_;
  6.     len = &len_;
复制代码

你太有才了!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2007-03-28 17:54 |只看该作者

  1.   if( NULL==addr )  //输入的参数,指针类型
  2.   {
  3.     peer = NULL;
  4.     len = NULL;
  5.   }
  6.   else
  7.   {
  8.     peer = &peer_;
  9.     len = &len_;
  10.   }
复制代码


这是你DIY的吧?

论坛徽章:
0
9 [报告]
发表于 2007-03-28 17:56 |只看该作者
以前写的,改掉了,第一贴也更新了

故障还是一样的,能帮我分析下吗?

[ 本帖最后由 andyY 于 2007-3-28 18:28 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2007-03-28 19:05 |只看该作者
楼主上面的代码,没有看到调用socket函数


建议你从socket那一行都贴出来


如果你有那么一行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP