Echo_Echo_. 2021-07-20 21:24 采纳率: 75%
浏览 224
已结题

C#中的TCP通信断开与连接问题

在服务端向客户端发送长数据时,断开了TCP通信,恢复连接后,为什么能接着发送之前没发送完的?
断开使用的这个方法


```c#
public static void SafeClose(this Socket socket)
        {
            try
            {
                socket.Shutdown(SocketShutdown.Both);
            }
            catch (Exception exp)
            {
                //处理异常
            }
            socket.Close();
        }

然后同时关闭了监听和发送线程
启动用的这个方法
 ip = IPAddress.Parse(host);
ipe = new IPEndPoint(ip, port);
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 //绑定EndPoint对象(地址)          
 server.Bind(ipe);
//开始监听
server.Listen(0);
 t = new Thread(Listen);
 t.Start();

Listen里面包括了send如下
 byte[] bytes = Encoding.ASCII.GetBytes(res[index]);               
 //发送消息给客户端
 socket.Send(bytes, bytes.Length, 0);
 textBox1.Text = textBox1.Text+res[index]+"\r\n";
 index++;

这样的效果虽然达到了我的预期效果,但是我有点想不明白,为什么中断了,重启线程还能接着发送信息,我本以为是要自己去找中断前发送到哪个位置了,然后接着发送。希望我问题描述明白了,期待大家的帮助
  • 写回答

1条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 8月1日
      • 已采纳回答 7月24日
      • 创建了问题 7月20日

      悬赏问题

      • ¥15 protel99.SE提示一下弹窗
      • ¥15 银河麒麟v10 执行.run失败如何解决
      • ¥15 如何用Python打开LA文件
      • ¥15 用mysql做一个高校工资管理系统
      • ¥21 Multisim设计用三端集成稳压器设计稳压电路
      • ¥15 tp6,在iframe里的网址通过获取url参数失败
      • ¥15 打开opendaylight查看拓扑,为什么直接就显示了两个Switch,在mininet配置了一个topo,这两个Switch还在
      • ¥15 无法远程连接pgsql
      • ¥15 建立DLNM模型时显示基础基矩阵不一致
      • ¥15 贝叶斯重复测量方差分析