1.Socket相关概念
Socket就是为了向Internet连接请求的机构。支持网络通信的服务器和客户端都必须具备Socket。
(可以理解为:socket就是ip+port封装,作为一个方法供实例调用。在人与人之间打电话时候需要电话机,同理程序与程序之间的交流也需要一部“电话”,这个“电话”就是Socket)
2.两种常见的Socket类型
- 流式Socket(STREAM):是一种面向连接的Socket,针对于面向连接的TCP服务应用,安全,但是效率低。
- 数据报式Socket ( DATAGRAM ):是一种无连接的Socket,对应于无连接的UDP服务应用,不安全(丢先.顺序混乱,在接收端要分析重排及要求重发),但效率高.
3.在Unity中常用到的Socket方法
- ------------------------------------相关类------------------------------------------------
- IPAddress类:包含了一个IP地址
- IPEndPoint类:包含了一对IP地址和端口号
- ------------------------------------方法类------------------------------------------------
- Socket ( ):创建一个Socket
- Bind( ):绑定一个本地的IP和端口号(IPEndPoint)
- Listen( ):让Socket侦听传入的连接尝试,并指定侦听队列容量
- Connect( ):初始化与另一个Socket的连接
- Accept( ):接收连接并返回一个新的socket
- Send():输出数据到Socket
- Receive( ):从Socket中读取数据
- Close():关闭Socket(销毁连接)
4.注意事项
- 至少要定义一个要连接的远程主机的IP和端口号。·
- 端口号必须在1和65535之间,最好在1024以后。
- 要连接的远程主机必须正在监听指定端口,也就是说你无法随意连接远程主机。
- 一个Socket一次只能连接一台主机。
- Socket关闭后无法再次使用
- 每个Socket对象只能一台远程主机连接.如果你想连接到多台远程主机,你必须创建多个Socket对象。
-如∶
-IPAddress addr = IPAddress.Parse("127.0.01");
- IPEndPoint endp = new IPEndPoint(addr,10001);
服务端先绑定: serverWelcomeSocket.Bind(endp)
客户端再连接: clientSocket.Connect(endp)
ps:资料摘抄自视频01.Socket编程基础1_哔哩哔哩_bilibili