当前位置:网站首页>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 的软件也要重新打开 重新连接 这是一个不好的点
边栏推荐
- Deep understanding of array related problems in C language
- Solve the cache breakdown problem
- Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
- 高等數學---第八章多元函數微分學1
- SSRF漏洞file伪协议之[网鼎杯 2018]Fakebook1
- 最佳实践 | 用腾讯云AI意愿核身为电话合规保驾护航
- MySQL "invalid use of null value" solution
- Flink | multi stream conversion
- 数据库系统概论-第一章绪论【概念模型、层次模型和三级模式(外模式、模式、内模式)】
- 得物客服热线的演进之路
猜你喜欢
Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
Take you to master the three-tier architecture (recommended Collection)
Help tenants
2022-7-6 初学redis(一)在 Linux 下下载安装并运行 redis
2022-7-7 Leetcode 34.在排序数组中查找元素的第一个和最后一个位置
2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
Battle Atlas: 12 scenarios detailing the requirements for container safety construction
高等数学---第八章多元函数微分学1
数据库系统概论-第一章绪论【概念模型、层次模型和三级模式(外模式、模式、内模式)】
最佳实践 | 用腾讯云AI意愿核身为电话合规保驾护航
随机推荐
2022-7-6 beginner redis (I) download, install and run redis under Linux
Excerpt from "misogyny: female disgust in Japan"
566. 重塑矩阵
Mathématiques avancées - - chapitre 8 différenciation des fonctions multivariables 1
Transferring files between VMware and host
"New red flag Cup" desktop application creativity competition 2022
The difference between memory overflow and memory leak
AutoCAD - how to input angle dimensions and CAD diameter symbols greater than 180 degrees?
Vmware共享主机的有线网络IP地址
手把手教会:XML建模
Excusez - moi, l'exécution a été réussie lors de l'utilisation des données de puits SQL Flink à Kafka, mais il n'y a pas de nombre dans Kafka
Custom thread pool rejection policy
Solve the cache breakdown problem
社会责任·价值共创,中关村网络安全与信息化产业联盟对话网信企业家海泰方圆董事长姜海舟先生
2022-7-6 Leetcode27.移除元素——太久没有做题了,为双指针如此狼狈的一天
The delivery efficiency is increased by 52 times, and the operation efficiency is increased by 10 times. See the compilation of practical cases of financial cloud native technology (with download)
requires php ~7.1 -> your PHP version (7.0.18) does not satisfy that requirement
How to check the ram and ROM usage of MCU through Keil
请问,PTS对数据库压测有好方案么?
华为镜像地址