Socket编程 涵盖代码和函数参数介绍_CHYabc123456hh的 ...

      最后更新:2021-12-16 23:20:11 手机定位技术交流文章

      • Socket是报废系统的开发方案,即用户主机,不需要网络基础设施(交换器、路由器)。
      • 在网卡驱动器上方,独立于硬件,即根据包装驱动程序编程的驱动器

      • 结尾:指通信频道对面两侧的两台计算机。
      • 应用程序编程接口API,即两端,应用层内应用程序之间的数据通信,遵循应用层协议,其中数据通信需要底层(传输层、网络层、数据链接层、物理层)的协助,通常包括操作系统的专门知识。
      • 申请程序与操作系统之间需要一个接口。应用程序编程接口 API 由该接口代表。接口 API 是一个系统传输界面,将应用程序进程控制与操作系统控制连接起来。换句话说,申请程序通过API接口对操作系统实行控制。操作系统实施完成后,实施结果将提交给我们的应用程序。

      • 共同应用方案拟订接口的一些实例
        • UNIX 配置的套接字界面
        • WINSOCK 是微软 Windows Socket 接口的缩写 。
      • Socket API
        • 在绝大多数情况下,对绝大多数操作系统来说
        • 开发了一个执行程序间通信的抽象系统是可能的。
        • 多企业集团界面的TCP/IP界面
        • 最常见的 API 界面互联网应用程序
        • 用户/服务器(C/S)结构用于通信。

      问题:主机和客户既执行许多应用程序,又执行许多应用程序,如何使客户程序与匹配的服务器应用程序相匹配?

      • 只有主机可从 IP 地址中识别 。
      • 由于整个主机的通信需要传输层的协助,港口号被用来区分不同过程之间的标记。

      • 服务器服务需要使用IP地址和端口号。
      • 然而,在服务器内部,合成由合成描述符加以维护,而合成描述符实际上是描述外地信息的结构参考。
      • Socket 是一个比喻术语。 文件操作的具体文件是操作类型 。
      • 返回的套接字描述符
        • 最重要的信息是地址。
        • IP 地址+端口号 = 短地址

      • 使用脚手架时, 您必须给出本地和远程的 IP 地址以及端口号。 要包括IP 地址和端口号等信息, 请使用 sockaddr_ in setting end地址 。
        • 地址家庭:Af_INET通常用于纳入许多协议。

      WinSock 是一个套接字 API 函数 。

      • 使用 Linux 套接字
      • 利用一个动态链接库来制作WSA版本的Socket工具,该版本是以前添加的。

      WSAStartup

      WSACleanup

      • 没有WSA的功能接口既适用于Windows,也适用于Linux,但是WSA与WSA的功能仅适用于Windows环境。
      • int WSACleanup(void);
      • 应用程序已使用所请求的套接字库完成, 最终需要使用 WSACleanup 函数来解开套接字库, 并释放套接字库占用的系统资源 。

      socket

      • 综合和连接应用程序与运输层之间的数据连接。

      • 套接字的类型
        • 使用TCP协议,使用Sock_Stream类型。
        • 正在使用 UDP 协议 。 Sock_ DGRAM
        • 绕过传输层,直接完成应用层与网络层之间的数据通信,使用 SOCK_RAW, 需要特殊的权利, Linux 操作需要根特权, 窗口需要管理员能力, 他两种方法都有独特的特点。
      • TCP和UDP的区别
        • TCP:可依赖(数据不错误、丢失或混乱,例如),连接、字节流传输和点对点
        • UDP:不可靠和断开的数据传输。

      closesocket

      • 我们正利用紧身衣
      • Linux利用了近距离
      • int closesocket(SOCKET sd);
      • 关闭标语 sd 的插座 。
      • 如果许多流程共享一个合成, 则使用剪贴板限制一个合成的引用次数, 并关闭剪贴板以完全关闭它 。
      • 就一揽子方案而言,在一个过程中使用无数线索是无法估量的。
        • 它是同一过程中的线条之一, 利用套接字来关闭套接字, 其余的线条无法进入 。
      • 返回数值
        • 0  : 成功
        • 失败的 SOCKET_ 错误 :

      bind

      • 当插座形成时,内部脚手架描述器没有包括地址信息,如IP地址和端口号,这些地址和端口号是用捆绑和设定脚手架本地断点地址所必须的。
      • 参数
        • Socket 描述符: 套接字描述符是用套接字生成的套接字描述符
        • 端点地址
          • 苏卡德里是一个结构。
        • 客户应用程序不需要使用约束功能,因为操作系统协助用户输入IP地址和端口号。
        • 此函数必须由服务器用于提供 IP 地址和端口号 。
          • IP地址如何相关?
            • 如果主机安装了各种网页卡并与网络不同区域连接,如果主机安装了各种网页卡并与网络不同区域连接,则将网络分开。
            • 因此,使用地址通配符INADR_ANY。

      listen

      • int listen(sd,queuesize);
      • 在服务器端流流中,使用了被动监听。
        • 仅仅服务端调用
        • 只使用流体插座连接 。
      • 配置连接请求队列的大小 。
      • 返回数值
        • 0 成功
        • 失败的 SOCKET_ 错误 :

      connect

      • connect (sd,saddr,saddrlen)
        • Socket 客户端
        • Saddr, 特定计算器特定港口的某一具体计算机特定港口
      • 无法关闭临时文件夹:%s。
      • 通信协议
        • TCP: TCP连接机构
          • 连接产生了成功的结果,表明它相互连接,可以有效互动。
        • UDP: 指定的服务器终端地址 。
          • 连接总是成功返回, 但情况并非总是如此 。

      accept

      • newsock = accept(sd,caddr,caddrlen);
      • 客户援引接受功能,从客户连接线请求中提取请求,在监听状态中以串流 sd 格式输入,并设置一条新线,将客户软件包链接起来形成频道。
      • 注意事项:
        • 仅用于TCP套接字
        • 仅用于服务器
      • 建立新插座并利用它们与新插座和客户进行沟通。
        • 原因
          • TCP是一项相互联系和值得信赖的点对点议定书。
          • 它是一个客户和服务,通过Socket连接,然后产生一个新的插座,负责客户与服务申请程序之间的通信,同时考虑到上述结构。
          • 如果单一客户无法获得服务,则无法同时为其余客户提供服务。
          • 主要线索或程序继续收听收到的请求,子线创建新的连接请求。

      send / send to

      • send (sd,*buf,len,flags)
      • sendto(sd,*buf,len,flags,destaddr,addrlen)
      • TCP 发送时使用传输函数 TCP- set(客户端和服务器)或连接函数的 UDP 客户端集,因为它已经连接,不再需要IP 地址和端口号。
      • Sendto 函数仅适用于未使用连接功能的 UDP 服务器套接字和 UDP 客户端 。

      recv / recv from

      • recv(sd,*buffer,len,flags)
      • rtecvfrom(sd,*buf,len,flags,senderaddr,saddrlen)
      • 矩形函数从 TCP 连接的对面获取数据, 或从 UDP 客户端获取数据, 该客户端从 UDP 服务器接收数据, 该服务器使用连接功能 。
      • 矩形函数接收来自 UDP 服务器的匹配数据,并将其发送给 UDP 客户端,而不使用连接功能。

      Setsockopt和motsockopt很少被使用。

      小结

      • 如果它是 tcp, 它是一个真正的连接。 如果没有 UDP, 请只给出一个端口和地址 。

      网络字节顺序

      • 应解决数据转换问题。
      • TCP/IP 指定协议信头中的二进制表达式的标准整数: 网络字节顺序 。
      • 某些 Socket API 方法需要以网络字节顺序(例如IP 地址和端口号)保存参数。
      • 在本地字节顺序和网络字节顺序之间转换。
        • 用 htons 转换本地字节顺序为网络字节顺序( 16 位元) 。
        • 将网络字节顺序转换为本地字节顺序( 16 位元) 。
        • 用 htonl 转换本地字节顺序为网络字节顺序( 32 位元) 。
        • 将网络字节顺序转换为本地字节顺序( 16 位元) 。

      正在分析服务器的 IP 地址

      • 客户端使用域名和IP地址识别服务器,但IP协议需要32个二进制IP地址,因此域名或IP地址必须转换为32个IP地址。
      • 函数
        • 使用 inet_addr () 将小数点位数 IP 地址转换为 32 位数 IP 地址 。
        • 要将域名转换为32位 IP 地址, 请使用 Gethostbyname () 。
          • 此函数返回主机结构的引用。

      用于解析的服务器端口号( 知道)

      • 客户端也可以使用服务名称来识别服务器端口。
      • 服务器名称必须翻译为众所周知的端口号 。
      • 函数
        • getservbyname()
          • 此函数返回种子结构的引用 。

      解析协议号

      • 客户可使用协议名称,如TCP任命协议。
      • 有必要将协议名称翻译为协议编号,如6号。
      • 函数
        • 要将协议名称转换为协议编号, 请使用 Getprotobyname () 。
        • 此函数返回结构原体的引用。

      TCP客户端软件

      • 确定服务器的 IP 地址和端口号 。
      • 创建套接字
      • 在设备中添加本地端地址( IP 地址和端口号) 。
      • 连接到服务器( 可选) 。
      • 应用级协议用于通信。
      • 关闭释放连接

      UDP客户端软件

      • 确定服务器的 IP 地址和端口号 。
      • 创建套接字
      • 在设备中添加本地端地址( IP 地址和端口号) 。
      • 要创建 UDP 数据包,请指定服务器终端地址。
      • 应用级协议用于通信。
      • 关闭释放连接

      连接sock () 是客户端软件的实现 。

      • 创建加密连接套接进程底部的代码 。
      • TCP和UDP的客户都有。
      • 异常处理

      访问客户以提供DAYTIME服务。

      • 获取日期和时间
      • TCPUDP(三协议服务)
      • 端口号为 13
      • 本地主机指定服务器和客户端都在同一台计算机上运行。
      • "白天"一词是指时间要求。

      TCP

      • 由于 tcp 是流传输协议, 代码是通过循环利用信息来接收的。 发送者提供的数据并不能保证接收端收到的数据相同, 可以想象数据切片与发送者收到的数据相同。

      UDP

      联合民主党采用数据报告办法,确保所提供的和收到的数据在任何时候都完整完整,从而不再需要使用循环系统而只接收单一收据。

      四种类型基本服务器

      • 未连接 UDP 循环

        • 流程
          • 创建套接字
          • 端口地址 INADR_ANY+ 与端口号
          • 客户一再要求
          • 遵循了应用层面的协议,并编写并向客户分发了答复报告。
        • 数据发送
          • 服务器无法使用连接 () 方法 。
          • 使用 Sendto () 方法提供数据报告而不连接到服务器
        • 数据接收
          • 使用矩形函数,接收数据并自动提取数据。
      • TCP 连接圈

        • 创建( 主要) 套接字并指定端口号 。
        • 在服务器上使用,设置(主听器)为被动监听模式。
        • 接收下一份请求(按主设置),使用接受()功能,并构建与客户连接的新设置。
        • 遵循应用程序级协议,定期接受客户请求,并使用新的合成方式编写和向客户发送回复信息。
        • 完成特定客户服务后,与客户的连接即告关闭。返回第3步。
      • 并发无连接

        • 主线索的初始任务是打开套接字并绑定端口号 。
        • 第二步:在主线上,重复校正()程序以接受下一个客户端的请求,并启动一条单独的线以处理客户端的回答。
          • 将具体请求作为分线,第一步。
          • 步骤二是根据应用级别协议生成回复信息,并使用Sendto () 发送。
          • 第三步,退出。 (基线处理以单一请求结束)
        • 注意事项:
          • 主线索仍在使用校正方法并定期接收请求。 建立线条响应服务 。
      • 并发面向连接
        • 主线程 第一步 创建( 主要) 套接字并指定端口号 。
        • 主线程 第二步 在服务器上使用,设置(主听器)为被动监听模式。。
        • 主行 3 回顾完成主设置的接受( ) 方法, 接收下一个客户端的下一个连接请求, 并启动一条新线索来处理客户的回答 。
          • 将具体请求作为分线,第一步。
          • 下一阶段是根据申请级协议与个人用户进行接触。
          • 第三步,退出。 (基线处理以单一请求结束)(线程终止)

      代码

      DAYTIME 服务器没有连接环 。

      对于连接,使用一个合并的 DAYTIME 服务器。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/14904.html

          热门文章

          文章分类