一个好奇的问题???

acsharplover 2003-11-06 09:19:55
加精
当客户端SOCKET,CONNECT()服务器后,但此时服务器的监听SOCKET并没有执行ACCEPT它,而客户段的SOCKET连接却能成功?
请问如何判断SOCKET是否真的连接成功???
...全文
82 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aachenG 2003-11-23
  • 打赏
  • 举报
回复
connect成功表示三次握手完成.
TCP模块负责处理三次握手,然后把成功的连接请求放入连接请求队列,到这时候服务器都还不知道有连接.
到服务器程序得到cpu运行时间时,accept从队列取出一个连接请求,开始处理服务.
你可以让服务器accpet之后send一个信息给客户端.
michaelli 2003-11-21
  • 打赏
  • 举报
回复
请问如何判断SOCKET是否真的连接成功???

accept()发返回值给客户端,告诉他是否真的连接成功
njuhuangmy 2003-11-21
  • 打赏
  • 举报
回复
当客户端SOCKET,CONNECT()服务器后,但此时服务器的监听SOCKET并没有执行ACCEPT它,而客户段的SOCKET连接却能成功?
请问如何判断SOCKET是否真的连接成功???

第一问,就应该这样的 ,listen 可以设置这样的 连接的个数,超出 listen 设置的个数的
将会 连接不上

第二个问题 ,看 connect 的返回值
awjx 2003-11-20
  • 打赏
  • 举报
回复
本来就是这样的吧
服务只要listen(),客户端就可以connect了吧,accept只是为接收数据作准备吧!
是吗?
flyhorseli 2003-11-08
  • 打赏
  • 举报
回复
我认为应该是可以connect成功的吧!
服务器端只要执行了listen(s,5)就表明通知了TCP栈在这个套接字上进行监听,连接队列为5个。看看connect()函数的实质过程只是TCP的三次握手,就是客户端和服务器的TCP协议栈进行的三次握手过程,而这个过程是不需要ACCEPT的。也就是服务器应该在完成了TCP的三次握手后才将一个已经连接了的socket返回给accept()函数。

在客户端判断connect是否成功当然很简单了,如果返回socket_error就不成功啦,否则就成功了,还是一样的嘛
netsys2 2003-11-07
  • 打赏
  • 举报
回复
当客户端SOCKET,CONNECT()服务器后,但此时服务器的监听SOCKET并没有执行ACCEPT它,而客户段的SOCKET连接却能成功?

不会吧?

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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