【.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

浙公網安備 33010602011771號