当前位置:网站首页>c#利用 TCP 协议建立连接

c#利用 TCP 协议建立连接

2022-07-07 12:10:00 孔雀东南飞-深圳

背景:有一个部署在 树莓派 上的一个服务器 需要用 windows 系统与其建立连接 数据格式为 json 格式 所以本文只有客户端的代码:

1 声明一个全局变量

Socket socket = null;

2 在 mainWindow 中写:

IPAddress ipadr = IPAddress.Parse("192.168.2.42");   //---ip地址为服务端地址
socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            
try
{
    socket.Connect(ipadr,1616);   //------------需要看服务端有没有设置端口号

}catch(Exception ex)
{
    System.Diagnostics.Debug.WriteLine("连接服务器失败 请按回车键退出!");
    return;
}

3 按钮触发事件

private void Button_Click(object sender, RoutedEventArgs e)
{
   //----定义json数据格式

   Comand com = new Comand();     //------需要额外定义类 类有两个属性 都是 string 型
   com.SendCmd = "1";
   com.msg = "null";
   string jsonData = JsonConvert.SerializeObject(com);    //----需要额外在 程序包管理器控制台导入包 否则报错
   socket.Send(Encoding.ASCII.GetBytes(jsonData));
            
   try
   {
        Thread receiveThread = new Thread(ReceiveMessage);   //----接收消息的方法下文有定义
        receiveThread.Start(receiveThread);
   }
   catch(Exception ex)
   {
        System.Diagnostics.Debug.WriteLine(ex.ToString());
   }
}

4 ReceiveMessage 方法

public void ReceiveMessage(object obj)
{
   try
   {
       byte[] bt = new byte[1024];
       int len = socket.Receive(bt);
       string data = Encoding.ASCII.GetString(bt,0,len);
       listBox.Dispatcher.BeginInvoke(    //----开始委托
           new Action(() => { listBox.Items.Add("\r\n 接收到的数据:" + data);}),null);
    }
    catch(Exception ex)
    {
        System.Diagnostics.Debug.WriteLine("接受失败 请确认是否断联!");
        // receiveSocket.Shutdown(SocketShutdown.Both);
        //    receiveSocket.Close();
        return;
    }
}

ps:有一个缺点就是 树莓派 那边会自己黑屏 再次打开的时候需要重开软件 windows这边把连接写在主方法里面 也就是说树莓派那边重新开开 这边 windows 的软件也要重新打开 重新连接 这是一个不好的点 

 

 

原网站

版权声明
本文为[孔雀东南飞-深圳]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_44957370/article/details/124910370