C#客戶端TCP/IP連接如何管理

c#
小樊
82
2024-09-14 23:34:28

在C#中,使用TCP/IP連接的客戶端可以通過(guò)System.Net.Sockets命名空間中的TcpClientNetworkStream類進(jìn)行管理

  1. 引入命名空間:
using System.Net;
using System.Net.Sockets;
using System.IO;
  1. 創(chuàng)建一個(gè)TcpClient實(shí)例并連接到服務(wù)器:
TcpClient client = new TcpClient();
await client.ConnectAsync("server_ip_address", server_port);
  1. 獲取與服務(wù)器的網(wǎng)絡(luò)流(NetworkStream):
NetworkStream stream = client.GetStream();
  1. 發(fā)送數(shù)據(jù)到服務(wù)器:
string message = "Hello, Server!";
byte[] data = Encoding.UTF8.GetBytes(message);
await stream.WriteAsync(data, 0, data.Length);
  1. 從服務(wù)器接收數(shù)據(jù):
byte[] buffer = new byte[1024];
int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);
  1. 關(guān)閉連接:
stream.Close();
client.Close();

將上述代碼片段組合成一個(gè)完整的方法:

public async Task ConnectToServerAsync()
{
    try
    {
        TcpClient client = new TcpClient();
        await client.ConnectAsync("server_ip_address", server_port);

        NetworkStream stream = client.GetStream();

        string message = "Hello, Server!";
        byte[] data = Encoding.UTF8.GetBytes(message);
        await stream.WriteAsync(data, 0, data.Length);

        byte[] buffer = new byte[1024];
        int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
        string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);

        Console.WriteLine("Server response: " + response);

        stream.Close();
        client.Close();
    }
    catch (Exception ex)
    {
        Console.WriteLine("Error: " + ex.Message);
    }
}

要使用此方法,請(qǐng)確保將"server_ip_address"和server_port替換為實(shí)際的服務(wù)器IP地址和端口號(hào)。然后,在程序中調(diào)用ConnectToServerAsync()方法以異步方式建立TCP/IP連接。

0