当前位置:网站首页>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 的软件也要重新打开 重新连接 这是一个不好的点
边栏推荐
- 得物客服热线的演进之路
- Selenium库
- 2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
- 请问指南针股票软件可靠吗?交易股票安全吗?
- MySQL error 28 and solution
- Laravel form builder uses
- Excellent open source system recommendation of ThinkPHP framework
- 【日常训练】648. 单词替换
- Is the compass stock software reliable? Is it safe to trade stocks?
- Mysql怎样控制replace替换的次数?
猜你喜欢
Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]
2022-7-7 Leetcode 34.在排序数组中查找元素的第一个和最后一个位置
Help tenants
Redis 核心数据结构 & Redis 6 新特性详
Did login metamask
得物客服热线的演进之路
高等數學---第八章多元函數微分學1
2022-7-6 Leetcode 977.有序数组的平方
Vmware 与主机之间传输文件
Take you to master the three-tier architecture (recommended Collection)
随机推荐
Realize the IP address home display function and number home query
AI talent cultivation new ideas, this live broadcast has what you care about
Use day JS let time (displayed as minutes, hours, days, months, and so on)
Drawerlayout suppress sideslip display
[high frequency interview questions] difficulty 2.5/5, simple combination of DFS trie template level application questions
PostgreSQL array type, each splice
mysql ”Invalid use of null value“ 解决方法
Laravel5 call to undefined function OpenSSL cipher IV length() error php7 failed to open OpenSSL extension
mysql导入文件出现Data truncated for column ‘xxx’ at row 1的原因
Attribute keywords aliases, calculated, cardinality, ClientName
最长上升子序列模型 AcWing 1014. 登山
Laravel5 call to undefined function openssl cipher iv length() 报错 PHP7开启OpenSSL扩展失败
Environment configuration of lavarel env
带你掌握三层架构(建议收藏)
When FC connects to the database, do you have to use a custom domain name to access it outside?
118. Yanghui triangle
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
Help tenants
高等數學---第八章多元函數微分學1
2022-7-6 Leetcode 977.有序数组的平方