C#Socket通信实现

1.编写服务端代码,以原石兑换码为例(分别建立两个控制台应用,一个用于服务端,一个用于客户端)

using System.Net.Sockets;
using System.Net;
using System.Text;

namespace 网络游戏服务器
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Socket mysocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//初始化
            IPAddress myIp = IPAddress.Parse("127.0.0.1");//指定IP
            IPEndPoint myPoint = new IPEndPoint(myIp, 8000);//指定IP和端口
            mysocket.Bind(myPoint);//开机
            mysocket.Listen(8);//监听
            //模拟兑换码
            string x = "114514";
            while (true)
            {
                Console.WriteLine("Start Accept");
                Socket clientSocket = mysocket.Accept();//应答
                while (true)
                {
                    byte[] myBuff = new byte[1024];
                    int recNum = clientSocket.Receive(myBuff);
                    string recStr = Encoding.UTF8.GetString(myBuff, 0, recNum);//转换接受的格式
                    Console.WriteLine("收到来自客户端的消息" + recStr);//把接收到的消息打印出来
                    if (recStr == x)
                    {
                        Console.WriteLine("收到兑换码请求");
                        string reply = "恭喜你兑换成功,获得原石8848颗";
                        byte[] data = Encoding.UTF8.GetBytes(reply); //编码回复消息
                                                                     // 发送回复消息给客户端
                        clientSocket.Send(data);
                    }
                    else
                    {
                        string reply2 = "无效的兑换码,请检查输入";
                        byte[] data = Encoding.UTF8.GetBytes(reply2); //编码回复消息
                                                                      // 发送回复消息给客户端
                        clientSocket.Send(data);
                    }
                    if (recStr == "exit")
                    {
                        break; // 如果接收到 "exit",跳出内层循环,断开连接并等待下一个连接
                    }
                }

            }
        }

    }
}

2.编写客户端代码

using System.Net.Sockets;
using System.Net;
using System.Text;

namespace 网络游戏客户端
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Socket mysocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//初始化
            IPAddress myIp = IPAddress.Parse("127.0.0.1");//指定ip
            IPEndPoint myPoint = new IPEndPoint(myIp, 8000);//指定ip和端口
            mysocket.Connect(myPoint); // 建立与目标主机的连接
            while (true)
            {
                Console.WriteLine("请输入原石兑换码");
                string sendstr = Console.ReadLine();
                byte[] sendBts = Encoding.UTF8.GetBytes(sendstr);//设置发送的格式
                mysocket.Send(sendBts); // 发送数据
                byte[] receiveBuffer = new byte[1024]; // 缓冲区大小可以根据需要调整
                int receiveLength = mysocket.Receive(receiveBuffer); // 接收数据
                string receivedData = Encoding.UTF8.GetString(receiveBuffer, 0, receiveLength); // 将接收到的字节数据转换为字符串
                Console.WriteLine("来自服务器的数据: " + receivedData); // 打印接收到的数据
                if (sendstr == "exit")
                {
                    break; // 输入exit时退出循环
                }
            }
        }
    }
}

3.先运行服务端再运行客户端,就能实现客户端和服务端的通信了(注意顺序不能错,错了客户端连接不了服务器会报错) 

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中,可以使用System.Net.Sockets命名空间中的类来实现Socket通信。以下是一个简单的示例来说明如何在C#实现Socket通信: 1. 首先,需要使用`Socket`类来创建服务器端和客户端的Socket对象。可以使用`SocketType.Stream`来创建一个基于TCP协议的Socket对象。 2. 服务器端需要使用`Socket.Bind`方法将Socket对象绑定到一个IP地址和端口号上。这样,服务器端就可以监听指定的地址和端口,等待客户端的连接。 3. 启动服务器端的监听,并使用`Socket.Accept`方法接受客户端的连接。一旦有客户端连接成功,服务器端会返回一个新的Socket对象,用于与该客户端进行通信。 4. 客户端需要使用`Socket.Connect`方法连接到服务器端指定的地址和端口。一旦连接成功,客户端就可以与服务器端进行通信。 5. 在服务器端和客户端之间可以使用`Socket.Send`方法和`Socket.Receive`方法来发送和接收数据。可以将数据转换为字节数组进行传输。 6. 当通信完成后,需要使用`Socket.Close`方法关闭Socket对象。 下面是一个简单的C#代码示例,演示了服务器端和客户端之间的Socket通信: ```csharp // 服务器端 Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); serverSocket.Bind(new IPEndPoint(IPAddress.Any, 8080)); serverSocket.Listen(10); Console.WriteLine("Waiting for client connection..."); Socket clientSocket = serverSocket.Accept(); Console.WriteLine("Client connected."); byte[] buffer = new byte

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值