[Unity]简单的socket客户端和服务器

来源:互联网 发布:双系统怎样重装ubuntu 编辑:程序博客网 时间:2024/05/16 17:30

Unity socket

Socket译为套接字,支持TCP/IP协议网络通信的基本操作单元,可以将套接字看做不同主机间的进程双向通信的端点。

Socket的通信流程

(1)    开启一个连接之前,需要新创建一个socket,然后将地址和端口绑定给这个sockrt,客户端在调用connect的时候,会由系统自动分配端口,因此可以省去bind

(2)    服务器开启监听

(3)    客户端连接服务器,服务器通过accept接收客户端连接

(4)    客户端和服务器通过write和read发送和接收数据

(5)    通过close关闭连接

服务器端

using System;using System.Net;using System.Net.Sockets;namespace server{    class Program    {        static void Main(string[] args)        {            Socket listenfd = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个套接字,第一个参数是地址族,第二个是套接字类型,游戏一般是stream,第三个是使用的协议            IPAddress ipAdr = IPAddress.Parse("127.0.0.1");//ip地址            IPEndPoint ipEp = new IPEndPoint(ipAdr, 1234);//ip地址和端口号            listenfd.Bind(ipEp);//给套接字绑定            listenfd.Listen(0);//开启监听,等待连接            Console.WriteLine("服务器启动成功");            while (true)            {                Socket connfd = listenfd.Accept();//接受客户端的连接,本例中所有的socket方法都是阻塞方法,accept返回新客户端的socket                Console.WriteLine("服务器accept");                byte[] readBuff = new byte[1024];                int count = connfd.Receive(readBuff);//接收到的信息存在readBuff中                string str = System.Text.Encoding.UTF8.GetString(readBuff, 0, count);//将字节转化为字符串                Console.WriteLine("服务器接收" + str);                byte[] bytes = System.Text.Encoding.Default.GetBytes("server " + str);                connfd.Send(bytes);//给客户端发消息            }         }    }}

客户端


using System;using System.Net.Sockets;namespace client{    class Program    {        static void Main(string[] args)        {            const int BUFFER_SISE = 1024;            byte[] readBuff = new byte[BUFFER_SISE];            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            socket.Connect("127.0.0.1", 1234);            String str = "cat";            byte[] bytes = System.Text.Encoding.Default.GetBytes(str);            socket.Send(bytes);            int count = socket.Receive(readBuff);            str = System.Text.Encoding.UTF8.GetString(readBuff, 0, count);            Console.Write(str);            socket.Close();            Console.Read();        }    }}


阅读全文
0 0
原创粉丝点击