在C#中进行Socket通信可以使用System.Net.Sockets.Socket
类来实现。
下面是一个简单的示例,演示如何使用C# Socket进行客户端和服务器之间的通信:
服务器端:
csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Server
{
public static void Main()
{
// 创建一个IP地址和端口号
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 8888;
// 创建一个TCP监听器
TcpListener listener = new TcpListener(ipAddress, port);
listener.Start();
Console.WriteLine("服务器已启动...");
// 接受客户端连接
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("客户端已连接...");
// 获取网络流
NetworkStream networkStream = client.GetStream();
// 接收消息
byte[] buffer = new byte[1024];
int bytesRead = networkStream.Read(buffer, 0, buffer.Length);
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("接收到的消息: " + message);
// 发送响应消息
string responseMessage = "Hello from the server!";
byte[] responseData = Encoding.ASCII.GetBytes(responseMessage);
networkStream.Write(responseData, 0, responseData.Length);
Console.WriteLine("响应消息已发送.");
// 关闭连接
client.Close();
listener.Stop();
}
}
客户端:
csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Client
{
public static void Main()
{
// 创建一个IP地址和端口号
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 8888;
// 创建一个TcpClient实例并连接服务器
TcpClient client = new TcpClient();
client.Connect(ipAddress, port);
// 获取网络流
NetworkStream networkStream = client.GetStream();
// 发送消息
string message = "Hello from the client!";
byte[] requestData = Encoding.ASCII.GetBytes(message);
networkStream.Write(requestData, 0, requestData.Length);
Console.WriteLine("消息已发送.");
// 接收响应消息
byte[] buffer = new byte[1024];
int bytesRead = networkStream.Read(buffer, 0, buffer.Length);
string responseMessage = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("接收到的响应消息: " + responseMessage);
// 关闭连接
client.Close();
}
}
在上述示例中,服务器端通过创建TCP监听器并等待客户端连接。一旦客户端连接成功,服务器端就会接收到客户端发送
的消息,并返回一个响应消息。客户端通过创建TcpClient实例并连接到服务器,然后发送消息并接收响应消息。
请注意,这只是一个简单的示例,可能需要根据你的具体需求进行适当修改。此外,还需要处理异常和错误情况,并进行
适当的错误处理和资源释放。