• C# — WinForm TCP连接之客户端


    TCP连接之客户端,涉及到如下三个函数,分别是:

    /*****************************
      ** 函数功能:
         用于与服务端进行TCP连接
      ** 输入参数: 
          IP:IP地址
            Port:端口号        
      ** 输出参数:
     ******************************/
     private void ClientConnect(string IP, string Port){}
    /******************************
     ** 函数功能:
        用于向服务端发送信息
     ** 输入参数: 
         MsgType:TCP协议中的协议头部
     ** 输出参数:
     ******************************/
     private void ClientSendMsg(ushort MsgType){}
    /******************************
      ** 函数功能:
         接受服务端发回的信息
      ** 输入参数: 
      ** 输出参数:
     ******************************/
      private void RecMsg(){}

    三者的关系图如下:

    具体代码如下:

    1、ClientConnect()

    View Code
    /******************************
      ** 作者: ***
     ** 变更时间: 2012-12-02
     ******************************/
     #region 连接服务端方法
     private void ClientConnect(string IP, string Port)
     {
         //定义一个套字节监听  包含3个参数(IP4寻址协议,流式连接,TCP协议)
         socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    
         //需要获取文本框中的IP地址
        IPAddress ipaddress = IPAddress.Parse(IP);
         //将获取的ip地址和端口号绑定到网络节点endpoint上
       IPEndPoint endpoint = new IPEndPoint(ipaddress, int.Parse(Port));
    
         //这里客户端套接字连接到网络节点(服务端)用的方法是Connect 而不是Bind
         socketClient.Connect(endpoint);
    
         //创建一个线程 用于监听服务端发来的消息
        threadClient = new Thread(RecMsg);
    
         //将窗体线程设置为与后台同步
        threadClient.IsBackground = true;
    
         //启动线程
        threadClient.Start();
     }
     #endregion

    2、ClientSendMsg()

    View Code
    /******************************
      ** 作者: ***
     ** 变更时间: 2012-12-02
     ******************************/
     #region 发送节目全屏byte串信息到服务端的方法
     private void ClientSendMsg(ushort MsgType)
     {
          //调用客户端套接字发送字节数组
         socketClient.Send(addHeadBody);
     }
     #endregion

    3、RecMsg()

    View Code
    /******************************
      ** 作者: 郭乐彬
      ** 变更时间: 2012-11-30
     ******************************/
     #region 接收服务端发来信息的方法
     private void RecMsg()
     {
         while (true) //持续监听服务端发来的消息
        {
             //定义一个1024*200的内存缓冲区 用于临时性存储接收到的信息
           byte[] arrRecMsg = new byte[1024 * 200];
    
             //将客户端套接字接收到的数据存入内存缓冲区, 并获取其长度
           int length = socketClient.Receive(arrRecMsg);
    
            byte[] tem = new byte[24];
            Array.Copy(arrRecMsg, 0, tem, 0, 24);
    
            ByteToObject bytetoobject = new ByteToObject();
            //MsgHead为一个自定义的结构体
            MsgHead msghead = (MsgHead)bytetoobject.BytesToStuct(tem, typeof(MsgHead));
      
            switch (msghead.MsgType)
            {
                  //根据自定义的TCP协议中规定的头部来决定后面的操作
           }
         }
    }
  • 相关阅读:
    目标检测
    模型压缩-L1-norm based channel pruning(Pruning Filters for Efficient ConvNets)
    ubuntu docker 环境安装
    姿态估计的数据集说明
    详解Pytorch中的网络构造,模型save和load,.pth权重文件解析
    MSE, MAE, Huber loss详解
    maskrcnn_benchmark 理解
    模型压缩-Learning Efficient Convolutional Networks through Network Slimming
    Focal Loss
    Github桌面版使用教程
  • 原文地址:https://www.cnblogs.com/guolebin7/p/3006521.html
Copyright © 2020-2023  润新知