UN2L3——Socket的TCP同步通信
UN2L3——Socket的TCP同步通信 服务端Socket的TCP同步通信 服务端Socket的基本思路如下: 创建套接字Socket 用Bind方法将套接字与本地地址绑定 用Listen方法监听 用Accept方法等待客户端连接 建立连接,Accept返回新套接字 对返回的新套接字用Send和Receive相关方法收发数据 用Shutdown方法释放连接 关闭套接字 根据以上思路,实现最基础的服务端代码 两台电脑在同一局域网下连接的实践 如果可以使用两台电脑并连接同一路由器,那么不妨将服务端代码中的IP地址改为在设备在路由器下的IP地址(在cmd使用ipconfig可查询) 并且客户端使用服务器的IP地址,如果可行,就可以实现客户端和服务端相互连接,使用两台设备学习的体会效果更好 游戏服务器一般使用8080作为自己的端口号 1234567891011121314151617181920212223242526272829303132333435363738394041static void Main(string[] args){ ...
UN2L2——Socket的TCP通信概述
UN2L2——Socket的TCP通信概述 服务端和客户端代码编写大概思路 客户端 创建套接字Socket 用Connect方法与服务端相连 用Send和Receive相关方法收发数据 用Shutdown方法释放连接 关闭套接字 服务端 创建套接字Socket 用Bind方法将套接字与本地地址绑定 用Listen方法监听 用Accept方法等待客户端连接 建立连接,Accept返回新套接字 用Send和Receive相关方法收发数据 用Shutdown方法释放连接 关闭套接字 TCP协议三次握手的体现 TCP协议的三次握手被Socket封装在了内部,不需要我们进行额外处理 TCP协议四次挥手的体现 TCP协议的四次挥手被Socket封装在了内部,不需要我们进行额外处理
UN2L1——Socket的重要API
UN2L1——Socket的重要API 本章代码关键字 123456789101112131415161718192021222324252627282930313233343536373839System.Net.Sockets //Socket所在命名空间Socket //套接字类,用于网络通信AddressFamily //网络寻址枚举类型,决定寻址方案AddressFamily.InterNetwork //IPv4寻址AddressFamily.InterNetwork6 //IPv6寻址SocketType //套接字枚举类型,决定使用的套接字类型SocketType.Dgram //支持数据报,最大长度固定的无连接、不可靠的消息(主要用于UDP通信)SocketType.Stream ...
UN1——网络开发理论和通信必备知识
UN1——网络开发理论和通信必备知识 前端程序网络开发需求 前端程序不需要像后端程序那样对网络通信、进程线程、数据库等知识进行更复杂的综合性应用 前端程序满足能对网络游戏开发中客户端网络模块中网络连接、网络通信、协议统一等必备需求即可 网络开发必备理论与知识 网络基本概念 IP、端口、Mac地址 客户端和服务端 数据通信模型 网络协议 网络协议概述 OSI 模型 TCP/IP 协议 TCP和UDP 通信前的必备知识 网络游戏通信方案概述 IP地址和端口类 域名解析 序列化和反序列化2进制数据 字节编码 序列化 反序列化
UN2——套接字Socket网络通信方案
UN2——套接字Socket网络通信方案 Socket 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。 一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。 从所处的地位来讲,套接字上联应用进程,下联网络协议栈, 是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口 套接字_百度百科 (baidu.com) 它主要用于制作长连接游戏(强联网游戏) 本系列学习内容 Socket的重要API TCP通信概述 同步 服务端和客户端的同步通信 区分消息类型 分包、黏包 客户端主动断开连接 实现心跳消息 异步 异步通信常用方法 服务端和客户端异步通信 UDP通信概述 服务端和客户端同步通信 异步通信常用方法
UN1L9-2——序列化和反序列化
UN1L9-2——序列化和反序列化 对于各类型数据和字节数据相互转换相关API,已在BitConverter讲过,这里一笔带过 序列化类对象 非字符串类型转字节数组 字节数组的长度,由该方法输入的数据类型决定,例如int就是4个字节,这个数组的长度就是4,存储了4个字节 这个方法可以转换大部分的基本数据类型,除了decimal和string,decimal我们几乎不用,而string我们使用Encoding类来转换 1byte[] bytes = BitConverter.GetBytes(99); 将字节数组转换为各种类型时,根据类型的不同,方法名是不同的,但是方法名的规律很简单,基本就是To + 类型或者To + Int + 位数 第一个参数填入要转换的字节数组,第二个参数填入要从数组第几个开始读取(默认为0) 12int i = BitConverter.ToInt32(bytes, 0);print(i); 字符串类型转字节数组 字符串 转换为 指定编码格式的字节数组...
UN1L9-1——字节编码
UN1L9-1——字节编码 字符编码 字符编码(英语:Character encoding)也称字集码, 是把字符集中的字符,编码为指定集合中某一对象,以便文本在计算机中存储或通过网络进行传递。 说人话: 计算机里只能存数字(2机制),所以如果文字字符想要进行存储的话,就需要把对应的文字字符转换为数字才能进行处理, 而字符编码就是文字字符在计算机中和数值的对应关系,是人为定义的一种映射规则。 比如: ASCII码(一种字符编码规则)中 数值65 用来映射 字符A,我们存储 A 这个字符,本质上存在内存中的是数值65对应的2进制是0100...
UN1L8——域名解析
UN1L8——域名解析 本章代码关键字 12345678IPHostEntry //域名解析后的返回值,可以通过该对象获取IP地址、主机名等等信息,我们不会去自行new它ipHostEntry.AddressList //获取关联IPipHostEntry.Aliases //获取主机别名列表ipHostEntry.HostName //获取DNS名称Dns //Dns相关静态类,可以使用它来根据域名获取IP地址Dns.GetHostName() //获取本地系统的主机名Dns.GetHostEntry() //同步获取指定域名的IP信息Dns.GetHostEntryAsync() ...