csharp,using System;,using System.Net;,using System.Net.Sockets;,using System.Text;class Program,{, static void Main(), {, // 创建IPEndPoint实例,指定远程主机的IP地址和端口号, IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8000); // 创建Socket实例,使用TCP协议, Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try, {, // 连接到远程主机, socket.Connect(remoteEP); // 发送数据, string message = "Hello, Server!";, byte[] buffer = Encoding.ASCII.GetBytes(message);, socket.Send(buffer, 0, buffer.Length, SocketFlags.None); // 接收响应, buffer = new byte[1024];, int bytesReceived = socket.Receive(buffer, 0, buffer.Length, SocketFlags.None);, string response = Encoding.ASCII.GetString(buffer, 0, bytesReceived); Console.WriteLine("Server response: " + response);, }, catch (Exception ex), {, Console.WriteLine("Exception: " + ex.Message);, }, finally, {, // 关闭Socket, socket.Shutdown(SocketShutdown.Both);, socket.Close();, }, },},
“
在C#中,使用Socket类可以方便地进行TCP数据的发送和接收,以下是一个简单的实例,展示了如何在C#中实现TCP通信:
1、创建监听:
创建一个TcpListener
对象,绑定到本地IP地址和端口上,并开始监听客户端的连接请求。
示例代码:
using System; using System.Net; using System.Net.Sockets; using System.Text; class TcpServer { public static void StartListening() { // 创建TCP监听器,绑定到本地IP地址和端口 TcpListener listener = new TcpListener(IPAddress.Any, 12345); listener.Start(); Console.WriteLine("服务器已启动,正在监听端口12345..."); while (true) { // 接受客户端连接 TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("客户端已连接!"); // 创建线程处理客户端请求 HandleClientComm(client); } } static void HandleClientComm(TcpClient client) { try { // 获取网络流 NetworkStream stream = client.GetStream(); // 缓冲区大小 byte[] bytes = new byte[client.ReceiveBufferSize]; int bytesRead = 0; // 读取数据 while ((bytesRead = stream.Read(bytes, 0, bytes.Length)) != 0) { string receivedData = Encoding.UTF8.GetString(bytes, 0, bytesRead); Console.WriteLine("收到数据: " + receivedData); // 响应客户端(可选) string response = "服务器已收到数据: " + receivedData; byte[] buffer = Encoding.UTF8.GetBytes(response); stream.Write(buffer, 0, buffer.Length); } client.Close(); } catch (SocketException se) { Console.WriteLine("SocketException: " + se.Message); } finally { client.Close(); } } static void Main(string[] args) { StartListening(); } }
2、运行服务器:
当运行上述服务器代码时,服务器将开始监听本地的12345端口,等待客户端的连接请求,一旦有客户端连接,服务器将接受连接并创建一个新的线程来处理该客户端的通信。
1、创建连接:
创建一个TcpClient
对象,指定服务器的IP地址和端口号,并尝试连接到服务器。
示例代码:
using System; using System.Net.Sockets; using System.Text; class TcpClientApp { static void Main(string[] args) { // 创建TCP客户端,连接到本地主机的12345端口 TcpClient client = new TcpClient("127.0.0.1", 12345); Console.WriteLine("已连接到服务器!"); try { // 获取网络流 NetworkStream stream = client.GetStream(); // 要发送的数据 string dataToSend = "你好,服务器!"; byte[] buffer = Encoding.UTF8.GetBytes(dataToSend); // 发送数据 stream.Write(buffer, 0, buffer.Length); Console.WriteLine("数据已发送到服务器: " + dataToSend); // 读取服务器响应(可选) byte[] bytes = new byte[client.ReceiveBufferSize]; int bytesRead = stream.Read(bytes, 0, bytes.Length); string response = Encoding.UTF8.GetString(bytes, 0, bytesRead); Console.WriteLine("收到服务器响应: " + response); client.Close(); } catch (SocketException se) { Console.WriteLine("SocketException: " + se.Message); } finally { client.Close(); } } }
2、运行客户端:
当运行上述客户端代码时,客户端将尝试连接到服务器,并向服务器发送一条消息,客户端将等待并读取服务器的响应消息,客户端关闭与服务器的连接。
通过上述实例,可以看到在C#中使用Socket进行TCP通信的基本流程,服务器端需要创建一个TcpListener对象来监听客户端的连接请求,并为每个连接创建一个处理线程,客户端则需要创建一个TcpClient对象来连接到服务器,并通过NetworkStream对象进行数据的发送和接收,在实际应用中,可以根据具体需求对上述代码进行扩展和优化,例如添加异常处理、支持多线程或异步编程等。