以下是一个简单的C# Socket通信的服务端和客户端示例:
服务端:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Server
{
private const int Port = 8888;
public static void Main()
{
// 监听指定端口
TcpListener listener = new TcpListener(IPAddress.Any, Port);
listener.Start();
Console.WriteLine("Server started. Waiting for connections...");
// 接收客户端连接
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("Client connected.");
// 获取网络流
NetworkStream stream = client.GetStream();
// 接收和发送数据
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Received: " + dataReceived);
string dataToSend = "Hello from server!";
byte[] bufferToSend = Encoding.ASCII.GetBytes(dataToSend);
stream.Write(bufferToSend, 0, bufferToSend.Length);
Console.WriteLine("Sent: " + dataToSend);
// 关闭连接
stream.Close();
client.Close();
listener.Stop();
Console.WriteLine("Server stopped.");
}
}
客户端:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class Client
{
private const int Port = 8888;
private const string ServerIP = "127.0.0.1";
public static void Main()
{
// 连接到服务端
TcpClient client = new TcpClient();
client.Connect(ServerIP, Port);
Console.WriteLine("Connected to server.");
// 获取网络流
NetworkStream stream = client.GetStream();
// 发送和接收数据
string dataToSend = "Hello from client!";
byte[] bufferToSend = Encoding.ASCII.GetBytes(dataToSend);
stream.Write(bufferToSend, 0, bufferToSend.Length);
Console.WriteLine("Sent: " + dataToSend);
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Received: " + dataReceived);
// 关闭连接
stream.Close();
client.Close();
Console.WriteLine("Disconnected from server.");
}
}
请注意,这只是一个简单的示例,用于展示Socket通信的基本流程。实际应用中,您可能需要根据具体需求进行修改和扩展。同时,确保服务端和客户端的IP地址和端口号匹配,并且服务端先于客户端启动。