![](https://img-blog.csdnimg.cn/direct/7118b0267d034e76b0e54d43197ecfc5.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
TCP/IP网络编程
文章平均质量分 80
以伊圣雨的《TCP/IP》为教材进行学习
青石横刀策马
菜鸟一只
展开
-
《TCP/IP网络编程》(第十五章)套接字和标准I/O
之前数据通信时,使用的是read&write函数以及其他各种I/O函数,本章将使用,例如C语言的fopen、fgetc、fputs等等;C++语言的cout、cin等等。原创 2024-06-14 23:31:49 · 1153 阅读 · 0 评论 -
《TCP/IP网络编程》(第十四章)多播与广播
当需要向多个用户发送多媒体信息时,如果使用TCP套接字,则需要维护与用户数量相等的套接字;如果使用之前学习的UDP,传输次数也需要和用户数量相同。所以为了解决这些问题,可以采用多播和广播技术,这样只需要,所有用户都能接收到信息。原创 2024-06-10 22:09:20 · 1712 阅读 · 0 评论 -
《TCP/IP网络编程》(第十三章)多种I/O函数(2)
使用readv和writev函数可以提高数据通信的效率,它们的功能可以概括为**“对数据进行整合传输及发送”**。即使用writev函数可以将分散在多个缓冲中的数据一并发送,使用readv函数可以由多个缓冲分别接受,原创 2024-06-06 20:49:30 · 1134 阅读 · 0 评论 -
《TCP/IP网络编程》(第十三章)多种I/O函数(1)
本章将继续介绍Linux系统中的send/recv函数,同时还会介绍Linux系统中的新I/O函数函数。原创 2024-06-04 23:53:56 · 992 阅读 · 0 评论 -
《TCP/IP网络编程》(第十二章)I/O复用(2)
下面是基于I/O复用的回声服务器端和客户端代码。原创 2024-05-29 22:44:55 · 1120 阅读 · 1 评论 -
《TCP/IP网络编程》(第十二章)I/O复用(1)
本章将讨论实现并发服务器的第二种办法,。I/O复用它允许进程或线程输入/输出(I/O)操作,而为每个I/O操作。这种技术可以显著提高应用程序的效率和性能,特别是在需要处理大量并发连接的场景下。原创 2024-05-28 22:47:18 · 1324 阅读 · 0 评论 -
《TCP/IP网络编程》(第十一章)进程间通信
意味着两个不同的进程间可以交换数据,它使得不同的进程能够协同工作,实现复杂的系统功能。原创 2024-05-28 21:06:33 · 795 阅读 · 0 评论 -
《TCP/IP网络编程》(第十章)多进程服务器端(2)
即每当有客户端向服务器请求服务时,服务器端都创建一个子进程为其提供服务,比如有5个客户端请求服务,则创建个5子进程。我们将扩展之前的回声服务器,使其可以同时向多个客户端体提供服务,实现模型如下图所示。下图是父进程调用fork()函数后的示意图。可以同时为3个客户端提供回声服务。原创 2024-05-27 18:49:22 · 430 阅读 · 0 评论 -
《TCP/IP网络编程》(第十章)多进程服务器端(1)
通过创建多个进程提供服务通过捆绑并统一管理I/O对象提供服务通过生成与客户端等量的线程提供服务下面先讲解多进程服务器,该方法,因此主要是在Linux平台下进行编程。原创 2024-05-25 23:31:59 · 1117 阅读 · 0 评论 -
《TCP/IP网络编程》(第九章)套接字的多种选项
输出的结果和我们预设的不同,受限于系统,可能无法按照我们的要求100%实现,操作系统可能有自己的缓冲区大小限制,这些限制可能高于或低于您尝试设置的值。若没有TIME_WAIT状态,如果最后这条ACK消息在传输途中丢失了,未能传给主机B,则主机B就会重传FIN消息,而不是关闭连接,但此时主机A已经关闭连接无法收到消息,那么主机B将无法按照程序关闭连接。左图是使用Nagle算法,右图是不使用Nagle算法,这里再次强调,即使是不使用Nagle算法,数据传输也不是逐字传输,这里只是方便理解,极端化处理。原创 2024-05-23 18:20:51 · 1215 阅读 · 0 评论 -
《TCP/IP网络编程》(第八章)域名及网络地址
是互联网上用于将域名和IP地址相互映射的一个分布式数据库系统。它的主要作用是让人们能够使用易于记忆的域名(如 www.example.com)来访问互联网上的资源,而不需要记住复杂的数字IP地址(如 192.0.2.1)。原创 2024-05-21 20:51:45 · 1149 阅读 · 0 评论 -
《TCP/IP网络编程》(第七章)优雅的断开套接字连接
如上图所示,主机A断开连接后,,再也无法接受主机B传输的数据,最终主机B传输的数据只能销毁,为了解决这一问题,再关闭连接时,只关闭流的一部分(半关闭),即可以传输数据但不能接受数据,或者可以接收数据但不能传输数据。两个套接字建立连接后,每个主机拥有单独的输入流和输出流,例如上图左边主机的输出流和右边主机的输入流相连;左边主机的输入流和右边主机的输出流相连。原创 2024-05-21 17:32:18 · 696 阅读 · 0 评论 -
《TCP/IP网络编程》(第六章)基于UDP的服务器端/客户端
回声服务器/客户端的要求已经在前面的章节讲过了,这里不再赘述,下面是基于UDP的数据I/O函数。调用connect并不意味着和对方UDP套接字连接,只是向UDP套接字注册IP和端口号信息。进行长时间的通信,使用已连接的UDP套接字可以提升效率,创建已连接的UDP套接字,使用。函数,当使用已连接的UDP套接字之后,便可以使用。函数将地址信息分配到套接字上,这一操作在调用。该程序示例迁移到Windows系统差异不大。客户端服务器不需要使用。原创 2024-05-20 19:22:34 · 729 阅读 · 0 评论 -
《TCP/IP网络编程》(第五章)基于TCP的服务器端/客户端(2)
应用层协议的目的是提供一种方式,使得运行在不同计算机上的应用程序能够通过网络发送和接收数据,并且能够理解彼此的数据格式和含义,基于TCP的服务器端/客户端(1)中已经定义了一个协议,即收到Q就终止连接。客户端连接到服务器后,以1字节整数形式传递所需计算数字的个数。客户端向服务器传递的每个整数型数据占用4字节。传递整数型数据后,紧接着传递运算符,运算符占用1字节。运算符包含三个。服务器以4字节整数型向客户端传递运算结果。客户端得到运算结果后,终止与服务器的连接。前三个要求就是应用层协议。原创 2024-05-17 23:13:35 · 1299 阅读 · 0 评论 -
《TCP/IP网络编程》(第四章)基于TCP的服务器端/客户端(1)
由于每次调用read/write和recv/send函数时,都会以字符串执行I/O操作,由于TCP传输的数据不存在边界,如果数据过大,有可能导致数据被分割成几个数据包传输给服务器,这样接收方可能无法正确的重构消息,无法满足回声需求。开启客户端,服务器会显示连接到第二个客户端。开启客户端,服务器会显示连接到第二个客户端。开启服务器,然后在另一个终端命令行输入。开启服务器,然后在另一个终端命令行输入。开启客户端,如下图则所示则连接成功。开启客户端,如下图则所示则连接成功。原创 2024-05-17 17:45:13 · 671 阅读 · 0 评论 -
《TCP/IP网络编程》(第三章)地址族和数据序列
是计算机为了区分程序中创建的不同套接字,而分配给套接字的序号,由16位组成,端口号唯一,可配分的范围在0~ 65535,其中0~10223是知名端口,一般分配给特定应用程序,所以应当分配范围之外的值。例如,如果一个IP地址的首字节是192(二进制为11000000),我们立即知道这是一个C类地址,网络ID占用3个字节,主机ID占用1个字节.0x1234567中,0x12是最高位字节,0x67是最低位字节,大端序中先保存最高位。返回的字符串是一个指向静态存储的指针,这意味着该字符串不应被修改,并且在每次。原创 2024-05-16 21:59:00 · 790 阅读 · 0 评论 -
《TCP/IP网络编程》(第二章)套接字类型和协议设置
面向连接的套接字会根据接收端的状态传输数据,如果传输出错还会提供重传服务;如果接收端的套接字缓存被填满,传输段的套接字也会停止传输,直达接收端可以接受。因此,面向连接的套接字除非特殊情况,不会发生数据丢失。Windows系统创建套接字。原创 2024-05-14 18:13:16 · 193 阅读 · 0 评论 -
《TCP/IP网络编程》(第一章)理解网络编程和套接字(Linux平台实现一个Server和client连接)
目前服务器大多在Linux系统上运行,而客户端大多是在Windows系统上运行,所以必须熟练掌握Linux/Windows双系统的网络编程能力,笔者这里使用的是Ubuntu 22.04.1 LTS。原创 2024-05-14 16:54:48 · 797 阅读 · 1 评论 -
《TCP/IP网络编程》(第一章)理解网络编程和套接字(Windows平台实现一个Server和client连接)
因为要进行网络编程,我这里使用的IDE是VS Code,所以要对配置进行一点修改,打开tasks.json,添加"tasks": ["args": ["-g","${file}","-o","-lwsock32"//添加到这里],},"$gcc"],原创 2024-05-13 19:01:45 · 361 阅读 · 2 评论