System.Net.Socket Tcp 学习笔记(一)

昨天用自己的代码“暴力测试”Tcp C/S 的模式,修修改改之后倒是可以顺利运行:服务器能够收到客户端的连接和发送,客户端可以联机到服务器并发送数据,崩溃出现在客户端“断开”部分。客户端运行 BeginDisconnect 之后,服务器的独立线程的 While 循环部分立即出现“死循环”,用来显示状态信息的 ListBox 被快速添加刷新,不明白这是为什么呢?从 CodeProject 下载了一个 Tcp/IP 的程序,看到对方的服务器端代码,也是大同小异。

1. 通常做法,是先 Bind 绑定,然后 Listen,紧跟着在 While(true) 循环中使用 Accept 等待。这一系列过程被写在一个方法内,但使用独立线程运行以防止界面冻结。

2. MSDN 上的一段话很有用:

备注

Connected 属性获取截止到最后的 I/O 操作时 Socket 的连接状态。当它返回 false 时,表明 Socket 要么从未连接,要么已断开连接。

Connected 属性的值反映最近操作时的连接状态。如果您需要确定连接的当前状态,请进行非阻止、零字节的 Send 调用。如果该调用成功返回或引发 WAEWOULDBLOCK 错误代码 (10035),则该套接字仍然处于连接状态;否则,该套接字不再处于连接状态。

如果调用用户数据报协议 (UDP) 套接字上的 Connect,则 Connected 属性始终返回 true;不过,此操作不更改 UDP 的内在无连接特性。

转载于:https://www.cnblogs.com/cinlap/archive/2009/07/25/1531042.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值