• C#Socket


    C#Socket

     一.网络协议

    如果要理解Socket,要熟悉TCP/IP即传输控制协议/网间协议,定义了主机如何连入因特网,数据如何在它们之间传输的标准。

    TCP/IP协议参考模型,把所有的TCP/IP系列协议归类到四个抽象层中:应用层,传输层,网络层,数据链路层,每一抽象层建立在低一层提供的服务上,并且为高一层提供服务。

    互联网为什么分层?

    层与层之间定好规则(就是接口),每一层做好自己的事,层可以内部演化。

    协议:规范,遵守的规则

    一共分为几层?5层,下面具体分析一下这5层

    实体层

     物理连接,光纤/电缆等。传递的是0和1

    链接层

     规定一下0和1的解读方式。

    以太网

    • 大概是一组信号当做数据包,成为帧-Head-data
    • Head:描述信息(发送者---接收者)
    • Data:真实数据
    • 数据必须是网卡到网卡的(每个网卡有Mac地址)
    • 广播一下,对着局域网的全部网卡都发一遍

    互联网是多个局域网组成的。局域网是子网络。

    网络层

    •  解决不同的计算机,在不同的局域网通讯问题。
    • IPV4确定属于哪个子网,独立的IP比较贵的。每个计算机都有一个IP地址:192.168.1.1一共32位的
    • 把帧里面data分成2块(Head包括IP地址+长度,data真实数据)
    • 帧长度是有限制的,如果超过,会拆成不同的包,每个包都有head和包序号

    传输层

    • 问题:电脑里面多个程序都使用网络,帧过来,到底给那个程序?得有个东西,告诉去给那个程序。(端口改闪亮登场了....)
    • 保证:电脑上的某程序的信息,发送到某个电脑上的某个程序。
    • 端口:0~65535,其中0到1023系统用的。保证程序和程序进行交流
    • 主机+端口=套件字(Socket),socket其实就是保证分布在不同电脑的程序交互,可以做网络应用程序开发
    • UDP协议,把data拆分成head+data(head只放端口)。不保证数据一定会被收到。特点:简单,可靠
    • TCP协议,数据的可达性,确保数据不丢失,确认过程。复杂版本的UDP。特点:负载低效,抵消更多资源,可靠。

    应用层

     http协议举例,说明data数据里面的含义。指定data里面什么格式,什么意义。

    二.网络通讯

    推荐一个框架,跨平台的

    中文网站

    https://www.supersocket.net/

    Supersocket有三大对象:Session,AppServer,Commands

    • Session:每个用户的连接,就是一个Session
    • AppServer:Socket服务器的实例
    • Commands:客户端回发数据的命令

    客户端发的信息格式:CommandName+空格-+参数0+空格+参数1+空格+参数N+\r\n

    服务端的处理:CommandName命令类来处理

    心跳检测机制:

    • 用来检测客户端是否掉线,客户端在线,间隔时间内服务器发送一个心跳包,服务器返回应答。
    • 如果心跳周期内,没收到,服务器就认为你下线了
  • 相关阅读:
    239. [LeetCode ]Sliding Window Maximum
    152.[LeetCode] Maximum Product Subarray
    53. [LeetCode] Maximum Subarray
    90 [LeetCode] Subsets2
    78[LeetCode] Subsets
    练习7.52
    练习7.47、7.48、7.49、7.51
    关于类类型的隐式类型转换
    练习7.44、7.45、7.46
    练习7.36、7.37、7.39、7.40
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/16867460.html
Copyright © 2020-2023  润新知