C#基于socket的TCP
时间: 2023-08-07 09:06:02 浏览: 53
C#基于Socket的TCP编程是一种常见的网络编程技术,它允许应用程序通过TCP/IP协议与远程服务器进行通信。在C#中,可以使用System.Net.Sockets命名空间中的TcpClient和TcpListener类来实现TCP连接的建立和监听。
要建立TCP连接,首先需要创建一个TcpClient对象,并指定要连接的服务器的IP地址和端口号。然后可以使用TcpClient的Connect方法来建立连接。一旦连接建立成功,就可以使用TcpClient提供的网络流进行数据的发送和接收。
以下是一个简单的C#代码示例,演示了基于Socket的TCP编程中的客户端和服务器端的交互:
客户端:
```csharp
using System;
using System.Net.Sockets;
public class TcpClientExample
{
public static void Main()
{
string serverIP = "127.0.0.1";
int serverPort = 8888;
try
{
TcpClient client = new TcpClient(serverIP, serverPort);
// 获取网络流
NetworkStream stream = client.GetStream();
// 发送数据
string message = "Hello, server!";
byte[] data = System.Text.Encoding.UTF8.GetBytes(message);
stream.Write(data, 0, data.Length);
// 接收数据
data = new byte[256];
int bytesRead = stream.Read(data, 0, data.Length);
string response = System.Text.Encoding.UTF8.GetString(data, 0, bytesRead);
Console.WriteLine("Server response: " + response);
// 关闭连接
client.Close();
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.Message);
}
}
}
```
服务器端:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
public class TcpServerExample
{
public static void Main()
{
int serverPort = 8888;
try
{
TcpListener server = new TcpListener(IPAddress.Any, serverPort);
// 开始监听
server.Start();
Console.WriteLine("Server started. Waiting for clients...");
// 接受客户端连接
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("Client connected.");
// 获取网络流
NetworkStream stream = client.GetStream();
// 接收数据
byte[] data = new byte[256];
int bytesRead = stream.Read(data, 0, data.Length);
string request = System.Text.Encoding.UTF8.GetString(data, 0, bytesRead);
Console.WriteLine("Client request: " + request);
// 发送数据
string response = "Hello, client!";
data = System.Text.Encoding.UTF8.GetBytes(response);
stream.Write(data, 0, data.Length);
// 关闭连接
client.Close();
server.Stop();
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.Message);
}
}
}
```
以上代码演示了一个简单的TCP客户端和服务器端的交互过程。客户端向服务器发送一条消息,服务器接收到消息后,返回一条响应给客户端。可以根据实际需求进行扩展和优化。