zoukankan      html  css  js  c++  java
  • 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 的内在无连接特性。

  • 相关阅读:
    96. 不同的二叉搜索树
    95. 不同的二叉搜索树 II
    94. 二叉树的中序遍历
    93. 复原IP地址
    python-007(用户登录(三次机会重试))
    python-006求1-2+3-4+5.....99的所有数的和
    python006(求1-2+3-4+5.....99的所有数的和)
    python-005(1-100奇数和偶数)
    python-004(while循环)
    python-003(if...elif...else)
  • 原文地址:https://www.cnblogs.com/cinlap/p/1531042.html
Copyright © 2011-2022 走看看