C#Socket的使用

在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("客户端已关闭");
        }
    }
}

运行服务器端代码后,再运行一个或多个客户端实例,就可以在客户端和服务器之间进行数据通信了。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值