新手请教个关于accept函数的问题?

BaoBrother 2009-11-04 02:54:19
如下:
sAccept=accept(sListen,(struct sockaddr*)&cliet,&iLen);

如果我没理解错的话,上面这句代码的意思是:当接客户发送了连接申请时,服务器端调用accept函数来接受连接申请,这时新创建了一个Socket(套接字),其句柄为sAccept。

现在有个问题就是:怎么获得sAccept的相关信息,以便判断sAccept是否为正常的连接申请(正常的连接留下,不正常的closesocket关掉sAccept)



(补充:我的程序是在纯C或C++下的,不是MFC)
...全文
68 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
BaoBrother 2009-11-05
  • 打赏
  • 举报
回复
好,谢谢楼上的!
licry01 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 baobrother 的回复:]
谢谢两位!

只能获得对方的IP和端口还是很难确定哪些是正常的连接,用楼上的方法好像不太好哦,还有没有别的办法呢。



[/Quote]



fd_set fdread;
TIMEVAL tjf = {0};
int ret=0;

FD_ZERO(&fdread);
FD_SET(sAccept,&fdread);

tjf.tv_sec =0;
tjf.tv_usec =100;

if((ret=select(0,&fdread,NULL,NULL,&tjf))==SOCKET_ERROR)
{
//在设置的时间范围内, 跟sAccept无法通信
}
else
{
//在设置的时间范围内, 跟sAccept能正常通信
}



具体的可查看select方法和结构TIMEVAL的msdn帮助
zpf82118 2009-11-04
  • 打赏
  • 举报
回复
用CSocket吧
重载OnClose方法
BaoBrother 2009-11-04
  • 打赏
  • 举报
回复
谢谢两位!

只能获得对方的IP和端口还是很难确定哪些是正常的连接,用楼上的方法好像不太好哦,还有没有别的办法呢。




feiyangdn 2009-11-04
  • 打赏
  • 举报
回复
getpeername可以获得对方的IP地址和端口号,如果要进一步了解对方情况,可以Accept之后,立即向对方发送消息或等待对方消息,得到期待的结果就证明为正常的连接申请。
jasonM2008 2009-11-04
  • 打赏
  • 举报
回复
上面的理解是正确的,获取信息getpeername ,查MSDN看详细说明!

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧