unity学习笔记(四)

您所在的位置:网站首页 bs2是什么游戏 unity学习笔记(四)

unity学习笔记(四)

2023-03-18 23:01| 来源: 网络整理| 查看: 265

引入引用

using System.Net; using System.Net.Sockets; using System.Threading; 服务端

创建Socket,绑定端口,设置最大连接量,开启一个线程来监听是否有客户端连接

//监听套接字 前台 static Socket listenSocket; //保存连接的客户端 static List clientSockets = new List(); static void Main(string[] args) { //创建监听套接字 listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //绑定端口 IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5555); listenSocket.Bind(ip); //设定一个监听的最大数量 listenSocket.Listen(10); //开启线程 Thread thread = new Thread(Listen); //设置为后台线程 thread.IsBackground = true; thread.Start(); Console.ReadKey(); }

监听端口,将连接的客户端newSocket保存,开启一个线程来监听客户端发来的消息

static void Listen() { //开始监听 Console.WriteLine("开始监听"); while (true) { Socket newSocket = listenSocket.Accept(); Console.WriteLine("有客户端链接"); //创建线程监听客户端发送的消息 Thread thread = new Thread(ReceiveMessage); thread.IsBackground = true; thread.Start(newSocket); //告诉其他客户端有客户端链接了 foreach (Socket socket in clientSockets) { socket.Send(new UTF8Encoding().GetBytes(newSocket.RemoteEndPoint.ToString() + ":已上线!")); } //保存客户端 clientSockets.Add(newSocket); } }

接收消息

static void ReceiveMessage(object obj) { Socket newSocket = (Socket)obj; while (true) { try { //监听消息 byte[] bs = new byte[1024]; int num=newSocket.Receive(bs); Console.WriteLine(newSocket.RemoteEndPoint.ToString() + ":" + new UTF8Encoding().GetString(bs)); byte[] bs2 = new byte[num]; for(int i = 0; i < num; i++) { bs2[i] = bs[i]; } SentToOther(newSocket, bs2); } catch { Console.WriteLine(newSocket.RemoteEndPoint.ToString() + ":客户端断开"); clientSockets.Remove(newSocket); return; } } }

将消息发送给其他客户端

static void SentToOther(object obj, byte[] bs) { Socket newSocket = (Socket)obj; foreach (Socket socket in clientSockets) { byte[] mes = new UTF8Encoding().GetBytes(newSocket.RemoteEndPoint.ToString() + ":" + new UTF8Encoding().GetString(bs)); Console.WriteLine(mes.Length); socket.Send(mes); } } 客户端

创建客户端的socket,连接服务端,开启一个线程监听服务端发来的消息

static Socket socket; static void Main(string[] args) { socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //创建要链接的ip IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5555); //连接 socket.Connect(ip); //开启监听消息线程 Thread thread = new Thread(ReceiveMessage); thread.IsBackground = true; thread.Start(); while (true) { string content = Console.ReadLine(); //发送消息 socket.Send(new UTF8Encoding().GetBytes(content)); } Console.ReadKey(); }

监听服务端发来的消息

static void ReceiveMessage() { while (true) { //接收服务端发来的消息 byte[] bs = new byte[1024]; int i=socket.Receive(bs); string str = new UTF8Encoding().GetString(bs); Console.WriteLine("服务端:"+new UTF8Encoding().GetString(bs)); } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3