c#实现最简单的socket通信(一对一)

    科技2022-07-10  169

    在局域网等联机游戏中 我们有很多方式可以实现联机 有各种插件等等 我们用代码来自己写服务器端和客户端 不用任何的插件

    我先给出源码

    using System; using System.Net.Sockets; using System.Net; namespace JungleWars//服务器端 { class Program { static void Main(string[] args) { Socket serverSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//地址类型,流,协议类型 //192.168.43.76 本机ip:127.0.0.1 IPAddress ipaddress = IPAddress.Parse("192.168.43.76"); IPEndPoint ipendpoint = new IPEndPoint(ipaddress, 8000); serverSocket.Bind(ipendpoint);//绑定完成 serverSocket.Listen(10);//处理链接队列个数 为0则为不限制 Socket clientSocket = serverSocket.Accept();//接收一个客户端链接 ///向客户端发送一条消息 string msg = "Hello client!"; byte[] date = System.Text.Encoding.UTF8.GetBytes(msg);//转换成为bytes数组 clientSocket.Send(date); ///接收一条客户端的消息 byte[] dateBuffer = new byte[1024]; int count = clientSocket.Receive(dateBuffer); string msgReceive = System.Text.Encoding.UTF8.GetString(dateBuffer, 0, count); Console.WriteLine(msgReceive); Console.ReadKey(); clientSocket.Close(); serverSocket.Close(); } } } using System; using System.Net.Sockets; using System.Net; using System.Text; namespace Tcp客户端 { class Program { static void Main(string[] args) { Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); clientSocket.Connect(new IPEndPoint(IPAddress.Parse("192.168.43.76"), 8000)); byte[] date = new byte[1024]; int count = clientSocket.Receive(date); string msg = Encoding.UTF8.GetString(date, 0, count); Console.WriteLine(msg); string s = Console.ReadLine(); clientSocket.Send(Encoding.UTF8.GetBytes(s)); Console.ReadKey(); clientSocket.Close(); } } }

    上边两个代码即可实现简单的通信 我们可以实现互发消息

    客户端:

    服务器端: 其中的语句注释写的很清楚 如果有问题可以联系我 主页有我的联系方式

    Processed: 0.036, SQL: 8