C# Socket实现简单控制台案例

什么是Socket?

Socket,中文翻译为套接字,是应用层和传输层之间的一个抽象层,用于两个不同主机之间的数据交互。在不同操作系统中,Socket的实现可能会有所不同,但是它们都提供了一组通用的网络编程接口,方便开发者进行网络编程。

为什么要使用Socket?

在网络编程中,Socket是一个非常常用的工具。使用Socket可以实现网络通信,让不同主机的程序之间进行数据传输。Socket可以使程序设计更加灵活,使得我们可以编写更加复杂的网络应用程序,例如,网络聊天室、文件传输程序等等。

创建Socket连接

在C#中,我们可以使用Socket类来创建一个Socket连接。下面是一个简单的Console应用程序,实现了一个Socket服务器和一个Socket客户端之间的数据传输。

服务器端

以下代码使用Socket类创建了一个服务器端Socket,并且把它绑定到了本地IP地址和端口号上,以等待客户端的连接。

Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

serverSocket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888));

serverSocket.Listen(10); // 设置最大连接数为10

Console.WriteLine("服务器已启动,等待客户端连接...");

while (true)

{

Socket clientSocket = serverSocket.Accept(); // 等待客户端连接

Console.WriteLine("客户端已连接");

// 接收客户端发来的消息

byte[] buffer = new byte[1024];

int length = clientSocket.Receive(buffer);

string message = Encoding.UTF8.GetString(buffer, 0, length);

Console.WriteLine("收到客户端发来的消息:" + message);

clientSocket.Shutdown(SocketShutdown.Both); // 关闭Socket连接

clientSocket.Close();

}

客户端

以下代码使用Socket类创建了一个客户端Socket,并且把它连接到了服务器端的IP地址和端口号上,然后向服务器端发送了一条消息。

Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

clientSocket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888));

Console.WriteLine("已连接到服务器");

string message = "Hello Server!";

byte[] buffer = Encoding.UTF8.GetBytes(message);

clientSocket.Send(buffer); // 发送消息

clientSocket.Shutdown(SocketShutdown.Both); // 关闭Socket连接

clientSocket.Close();

总结

Socket是一种非常重要的网络编程工具,它可以用于实现不同主机之间的数据传输。通过Socket,我们可以编写出更加灵活和复杂的网络应用程序,例如,网络聊天室、文件传输程序等等。在C#中,我们可以使用Socket类的相关方法来创建一个Socket连接,并进行数据的发送和接收。

后端开发标签