C#基于Sockets类实现TCP通讯攻略
TCP/IP协议是网络编程的基石,它提供了可靠的传输和连接保障。在C#语言中,可以使用Sockets类库进行网络编程。接下来,我们将详细讲解如何基于Sockets类实现TCP通讯。
步骤一:创建套接字
套接字是网络通讯的基础设施,它代表了通讯的终点。在C#中,可以通过Socket类进行套接字的创建和管理。
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 12345;
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(ipAddress, port));
serverSocket.Listen(10);
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(ipAddress, port);
以上代码创建了一个服务端套接字和一个客户端套接字,它们分别绑定了本机的IP地址和端口,并且通过Connect方法连接了服务端的监听端口。
步骤二:发送和接收数据
套接字创建完成后,就可以进行数据的发送和接收了。
发送数据
使用套接字的Send方法可以向远程主机发送数据。以下是一个服务端向客户端发送消息的示例:
string message = "Hello, client!";
byte[] data = Encoding.UTF8.GetBytes(message);
clientSocket.Send(data);
接收数据
使用套接字的Receive方法可以接收来自远程主机的数据。以下是一个客户端接收服务端消息的示例:
byte[] buffer = new byte[1024];
int length = clientSocket.Receive(buffer);
string message = Encoding.UTF8.GetString(buffer, 0, length);
Console.WriteLine(message);
示例一:C# TCP客户端示例
以下是一个使用Sockets类库实现的C# TCP客户端示例:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ClientDemo
{
class Program
{
static void Main(string[] args)
{
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 12345;
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(ipAddress, port);
Console.WriteLine("连接服务器成功!");
while (true)
{
Console.Write("请输入要发送的消息:");
string message = Console.ReadLine();
byte[] data = Encoding.UTF8.GetBytes(message);
clientSocket.Send(data);
byte[] buffer = new byte[1024];
int length = clientSocket.Receive(buffer);
message = Encoding.UTF8.GetString(buffer, 0, length);
Console.WriteLine($"接收到服务器的消息:{message}");
}
}
}
}
示例二:C# TCP服务端示例
以下是一个使用Sockets类库实现的C# TCP服务端示例:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ServerDemo
{
class Program
{
static void Main(string[] args)
{
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 12345;
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(ipAddress, port));
serverSocket.Listen(10);
Console.WriteLine("启动服务端成功,等待客户端连接...");
while (true)
{
Socket clientSocket = serverSocket.Accept();
Console.WriteLine($"客户端{((IPEndPoint)clientSocket.RemoteEndPoint).Address.ToString()}已连接!");
byte[] buffer = new byte[1024];
int length = clientSocket.Receive(buffer);
string message = Encoding.UTF8.GetString(buffer, 0, length);
Console.WriteLine($"接收到客户端的消息:{message}");
message = $"你好,{message}";
byte[] data = Encoding.UTF8.GetBytes(message);
clientSocket.Send(data);
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
}
}
}
}
通过以上两个示例,我们可以清楚地理解基于Sockets类实现TCP通讯的核心思想和过程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#基于Sockets类实现TCP通讯 - Python技术站