C#中TCP通信的實現(xiàn)示例
1.TCP通信的示例代碼
TCP通信過程中將通信的雙方分為服務端和客戶端,TCP通信的客戶端和服務端的主要區(qū)別在于它們的角色和行為:
服務端:
- 負責監(jiān)聽特定的端口和IP地址。
- 等待客戶端的連接請求。
- 接受連接后,可以與客戶端進行數(shù)據(jù)交換。
客戶端:
- 發(fā)起連接請求。
- 連接到服務端后,進行數(shù)據(jù)交換。
服務端代碼示例:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class TcpServer
{
static void Main()
{
// 創(chuàng)建TCP監(jiān)聽器
TcpListener server = new TcpListener(IPAddress.Any, 12345);
// 啟動監(jiān)聽
server.Start();
Console.WriteLine("服務器正在監(jiān)聽端口 12345...");
// 接受客戶端連接
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("客戶端連接成功!");
// 獲取網(wǎng)絡流
NetworkStream stream = client.GetStream();
// 讀取客戶端發(fā)送的數(shù)據(jù)
byte[] buffer = new byte[256];
int bytesRead;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0)
{
string message = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine("收到消息: " + message);
// 向客戶端發(fā)送回復消息
byte[] response = Encoding.UTF8.GetBytes("服務器已收到消息");
stream.Write(response, 0, response.Length);
}
// 關閉連接
client.Close();
server.Stop();
}
}
客戶端代碼示例:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class TcpClientExample
{
static void Main()
{
// 創(chuàng)建TCP客戶端
TcpClient client = new TcpClient();
// 連接到服務端(localhost:12345)
client.Connect("127.0.0.1", 12345);
Console.WriteLine("已連接到服務器");
// 獲取網(wǎng)絡流
NetworkStream stream = client.GetStream();
// 發(fā)送消息到服務端
string message = "你好,服務器!";
byte[] buffer = Encoding.UTF8.GetBytes(message);
stream.Write(buffer, 0, buffer.Length);
Console.WriteLine("已發(fā)送消息: " + message);
// 接收服務端的回復
buffer = new byte[256];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine("收到回復: " + response);
// 關閉連接
client.Close();
}
}實驗結果:

2.上位機與儀器建立連接時的角色選擇
在上位機(Host Computer)和下位機(通常是嵌入式設備或硬件設備)通信的場景中,通常上位機程序是指與硬件進行通信的客戶端程序。根據(jù)這個角色,通常上位機程序會被構建為客戶端。
為什么上位機程序通常作為客戶端構建:
1.主動發(fā)起連接: 上位機程序通常會主動發(fā)起與下位機設備的連接,發(fā)送請求,讀取設備狀態(tài)或控制設備工作。相比之下,下位機設備通常只是等待來自上位機的連接請求,因此它們的角色通常是服務器。
2.監(jiān)控與控制: 上位機一般負責監(jiān)控多個下位機設備,獲取數(shù)據(jù),發(fā)出控制指令,或者對設備進行配置和調(diào)整。它們通常是用戶操作的地方。
3.功能需求: 上位機程序通常需要提供豐富的用戶界面(UI)、數(shù)據(jù)處理能力、報告生成和數(shù)據(jù)存儲等功能。這些功能要求它作為客戶端與服務器(即下位機)進行通信,進行數(shù)據(jù)收發(fā)。
到此這篇關于C#中TCP通信的實現(xiàn)示例的文章就介紹到這了,更多相關C# TCP通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
word ppt excel文檔轉換成pdf的C#實現(xiàn)代碼
這篇文章主要介紹了word ppt excel文檔轉換成pdf的C#實現(xiàn)代碼,有需要的朋友可以參考一下2014-01-01
C#實現(xiàn)根據(jù)實體類自動創(chuàng)建數(shù)據(jù)庫表
本文主要介紹了C#通過自定義特性實現(xiàn)根據(jù)實體類自動創(chuàng)建數(shù)據(jù)庫表的方法。具有很好的參考價值,需要的朋友一起來看下吧2016-12-12
C#通過rabbitmq實現(xiàn)定時任務(延時隊列)
工作中經(jīng)常會有定時任務的需求,常見的做法可以使用Timer、Quartz、Hangfire等組件,本文使用C#通過rabbitmq實現(xiàn)定時任務(延時隊列),感興趣的可以了解一下2021-05-05

