zoukankan      html  css  js  c++  java
  • Socket收发信息

    List<Socket> SocketClientList = new List<Socket>();
    public Form2()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    IPEndPoint ipEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5555);
    serverSocket.Bind(ipEndpoint);
    serverSocket.Listen(10);
    ThreadPool.QueueUserWorkItem(new WaitCallback(GetAccept), serverSocket);


    }

    private void GetAccept(object state)
    {
    Socket serverSocket = state as Socket;
    while (true)
    {
    Socket socketClient = serverSocket.Accept();
    socketClient.Send(Encoding.Default.GetBytes("收到一个连接————"));
    SocketClientList.Add(socketClient);
    ThreadPool.QueueUserWorkItem(new WaitCallback(ReceiveData), socketClient);
    }
    }
    private void ReceiveData(object obj) {
      Socket socketClient = obj as Socket;
      byte[] buffer = new byte[1024*1024];

      while (true) {

        int l=0; 
      try //捕获异常退出
      {
        l= socketClient.Receive(buffer, 0, buffer.Length, SocketFlags.None);

      }
      catch {

        SocketClientList.Remove(socketClient);    

        return;

        //异常退出

      }
        //在退出前会发送一个字消息 正常退出
        if (l == 0)
        {
          socketClient.Shutdown(SocketShutdown.Both);
          socketClient.Close();
          SocketClientList.Remove(socketClient);

          return;
        }
        string msgfromclient = Encoding.Default.GetString(buffer, 0, l);
      
      //在下面添加收到消息的逻辑
      }
    }
    private void button2_Click(object sender, EventArgs e)
    {
      foreach (Socket socket in SocketClientList)

       {

        if(socket.Connected)

        {

          socket.Send(Encoding.Default.GetBytes(("data" + DateTime.Now.ToString())));

        }
        
      }
    }

  • 相关阅读:
    【训练题】最优比率生成树 P1696
    2019/9/15 校内模拟赛 考试报告
    b 解题报告
    HDU4714 Tree2cycle 解题报告
    2019/9/2 校内练习赛 考试报告
    2019/8/31 校内模拟赛 考试报告
    2019/8/29 校内模拟赛 考试报告
    康托展开
    洛谷P3807卢卡斯定理
    矩阵
  • 原文地址:https://www.cnblogs.com/boentouch/p/12818181.html
Copyright © 2011-2022 走看看