温馨提示×

c#socket通信怎么实现

小亿
98
2023-07-26 17:06:25
栏目: 编程语言

在C#中实现Socket通信有多种方式,其中常见的方式是使用System.Net.Sockets命名空间提供的类。

下面是一个简单的示例,演示了如何使用Socket进行客户端和服务器之间的通信:

1. 客户端代码:

csharp

using System;

using System.Net;

using System.Net.Sockets;

using System.Text;

public class Client {

    public static void Main() {

        // 创建一个Socket对象

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

        // 连接到服务器

        IPAddress serverIP = IPAddress.Parse("服务器IP地址");

        int serverPort = 12345; // 服务器端口号

        IPEndPoint serverEndPoint = new IPEndPoint(serverIP, serverPort);

        clientSocket.Connect(serverEndPoint);

        // 发送数据到服务器

        string message = "Hello, server!";

        byte[] data = Encoding.ASCII.GetBytes(message);

        clientSocket.Send(data);

        // 接收服务器的响应

        byte[] buffer = new byte[1024];

        int bytesRead = clientSocket.Receive(buffer);

        string response = Encoding.ASCII.GetString(buffer, 0, bytesRead);

        Console.WriteLine("服务器响应:" + response);

        // 关闭Socket连接

        clientSocket.Shutdown(SocketShutdown.Both);

        clientSocket.Close();

    }

}

2. 服务器端代码:

csharp

using System;

using System.Net;

using System.Net.Sockets;

using System.Text;

public class Server {

    public static void Main() {

        // 创建一个Socket对象

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

        // 绑定IP地址和端口号

        IPAddress serverIP = IPAddress.Parse("服务器IP地址");

        int serverPort = 12345; // 服务器端口号

        IPEndPoint serverEndPoint = new IPEndPoint(serverIP, serverPort);

        serverSocket.Bind(serverEndPoint);

        // 开始监听客户端连接

        serverSocket.Listen(10);

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

        // 接受客户端连接请求

        Socket clientSocket = serverSocket.Accept();

        // 接收客户端发送的数据

        byte[] buffer = new byte[1024];

        int bytesRead = clientSocket.Receive(buffer);

        string request = Encoding.ASCII.GetString(buffer, 0, bytesRead);

        Console.WriteLine("客户端请求:" + request);

        // 发送响应到客户端

        string response = "Hello, client!";

        byte[] data = Encoding.ASCII.GetBytes(response);

        clientSocket.Send(data);

        // 关闭Socket连接

        clientSocket.Shutdown(SocketShutdown.Both);

        clientSocket.Close();

        serverSocket.Close();

    }

}

在使用上述示例代码时,需要将服务器IP地址替换为实际的服务器IP地址。客户端和服务器端通过指定的IP地址和端口

号进行通信。

以上是一个简单的示例,你可以根据需求扩展和修改代码,以满足实际的应用场景。

0