在C#中,可以使用System.Net.Sockets
命名空间中的Socket
类来实现网络通信。下面是一个简单的示例,演示了如何创建一个服务器和客户端,并在它们之间传输数据。
服务器端代码:
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 = 12345;
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, port);
// 创建Socket对象
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try {
// 绑定IP地址和端口,并开始监听
serverSocket.Bind(ipEndPoint);
serverSocket.Listen(10);
Console.WriteLine("服务器已启动,等待客户端连接...");
while (true) {
// 接受一个客户端连接
Socket clientSocket = serverSocket.Accept();
Console.WriteLine("客户端已连接,准备接收数据...");
byte[] data = new byte[1024];
int length = clientSocket.Receive(data);
// 解析接收到的数据
string message = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine("接收到数据:" + message);
// 向客户端发送响应
byte[] response = Encoding.UTF8.GetBytes("接收到数据:" + message);
clientSocket.Send(response);
// 关闭客户端连接
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
Console.WriteLine("客户端连接已关闭");
}
}
catch (Exception ex) {
Console.WriteLine("服务器发生异常:" + ex.Message);
}
finally {
// 关闭服务器Socket
serverSocket.Close();
Console.WriteLine("服务器已关闭");
}
}
}
客户端代码:
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 = 12345;
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, port);
// 创建Socket对象
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try {
// 连接服务器
clientSocket.Connect(ipEndPoint);
Console.WriteLine("已连接服务器,请输入要发送的数据:");
while (true) {
// 通过控制台输入要发送的数据
string message = Console.ReadLine();
// 发送数据到服务器
byte[] data = Encoding.UTF8.GetBytes(message);
clientSocket.Send(data);
// 接收服务器的响应
byte[] response = new byte[1024];
int length = clientSocket.Receive(response);
// 解析接收到的响应
string responseMessage = Encoding.UTF8.GetString(response, 0, length);
Console.WriteLine("接收到服务器的响应:" + responseMessage);
}
}
catch (Exception ex) {
Console.WriteLine("客户端发生异常:" + ex.Message);
}
finally {
// 关闭客户端Socket
clientSocket.Close();
Console.WriteLine("客户端已关闭");
}
}
}
运行服务器端代码后,再运行一个或多个客户端实例,就可以在客户端和服务器之间进行数据通信了。