【.Net MF网络开发板研究-05】Socket编程之客户端
介绍完了《Socket编程之服务端》之后,我们这篇文章介绍一下Socket客户端编程。
官方示例中也包括了SocketClient,不过其完成的功能一是DNS解析,二是网站数据接收。我们需要大幅度改进一下,让SocketClient程序和PC上的Socket Server进行通信。
连接服务器函数代码如下:
private static Socket ConnectSocket(String ip, Int32 port)
{
try
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(new IPEndPoint(IPAddress.Parse(ip), port));
return socket;
}
catch
{
return null;
}
}
主函数代码调用connectSocket函数,如果连接成功,则发送“hello .net micro framework!!!”,发送完之后,然后接收服务器发的数据,并把它直接发送回去,相关代码如下。
while (true)
{
serverSocket = ConnectSocket("192.168.1.128", 8080);
if (serverSocket != null)
{
string s="hello .net micro framework!!!";
byte[] bytDatas = System.Text.UTF8Encoding.UTF8.GetBytes(s);
serverSocket.Send(bytDatas);
while (true)
{
try
{
Byte[] buffer = new Byte[1024];
if (serverSocket.Poll(5 * c_microsecondsPerSecond, SelectMode.SelectRead))
{
if (serverSocket.Available == 0) return;
Int32 bytesRead = serverSocket.Receive(buffer, serverSocket.Available, SocketFlags.None);
byte[] bytData = new byte[bytesRead];
Array.Copy(buffer, bytData, bytData.Length);
string ss = new string(System.Text.UTF8Encoding.UTF8.GetChars(bytData));
Debug.Print(ss);
serverSocket.Send(bytData);
}
}
catch (SocketException se)
{
Debug.Print(se.ToString());
break;
}
}
}
Thread.Sleep(1000);
}
把代码部署到开发板并运行,然后我们打开已经编写好的TCP Server程序(我编写的一个TCP/UDP测试工具,下载地址如下:http://www.sky-walker.com.cn/MFRelease/Tools/YFTCPServer.rar。)
运行后的程序界面如下:
可以发现,客户端已经连接到服务器了,并且发送了“hello .net micro framework!!!”,我们发送数据“.net micro framework”,发现服务器也已经返回所发送的数据了。
我们打开串口调试程序,也会发现开发板程序,把接收的程序通过debug口发送出来了,如下图所示:
基本的网络编程我们都介绍完了,用户可以根据自己的实际需要,很方便的编写网络通信程序了。
--------------------------------------------------------------------------------------------------
本文源码:http://www.sky-walker.com.cn/MFRelease/Sample/YFMFSocketClient.rar
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
2009-07-21 .Net MF V4.0开源前的代码整理