- 博客(21)
- 收藏
- 关注
原创 《TCP/IP网络编程》课后练习第十九-二十四章(自己写的,非标准答案)
同步I/O是调用send/recv函数的瞬间开始传输数据,send/recv函数执行完返回的时刻完成数据传输/接收,而异步I/O则是调用完成立即返回。异步I/O是重叠I/O的前提,重叠I/O特指同一线程内部向多个目标传说或接收数据,异步I/O没有特指多目标。重叠I/O最重要的前提条件就是异步I/O,为了完成异步I/O,调用的I/O函数应以非阻塞模式工作。同步I/O过程中函数无法返回,因此不能执行其他任务,异步方式能够比同步方式更有效地使用CPU。边缘触发,边缘触发注册事件少,I/O函数不阻塞。
2024-05-10 11:54:25
812
1
原创 《TCP/IP网络编程》课后练习第十五-十八章(自己写的,非标准答案)
使用标准I/O函数传输数据时,经过2个缓冲,通过fputs函数传输字符串时,首先将数据传递到标准I/O函数的缓冲,然后数据将移动到套接字输出缓冲,最后将字符串发送到对方主机。标准I/O函数具有良好的移植性,不仅是I/O函数,所有标准函数具有良好的移植性,为了支持所有操作系统,这些函数都是按照ANSI C标准定义的。标准I/O函数可以利用缓冲提高性能,使用标准I/O函数时会得到额外的缓冲支持,需要传输的数据越多,有无缓冲带来的性能差异越大。每次调用select函数时都需要向该函数传递监视对象信息。
2024-05-06 19:56:20
853
原创 《TCP/IP网络编程》课后练习第十四章(自己写的,非标准答案)
广播在“一次性向多个主机发送数据”这一点上与多播类似,但传输数据的范围有区别,多播即使在跨越不同网络的情况下,只要加入多播组就能接收数据,相反,广播只能向同一网络中的主机传输数据。若通过TCP向1000个主机发送文件,共需传递1000次,但此时若使用多播方式传输文件,则是需要发送1次。TTL是Time to Live的简写,是决定“数据包传递距离”的主要因素。TTL的值设置过大将影响网络流量,设置过小数据包将无法传到目标。通过网络中的特殊协议工作的软件概念上的网络。
2024-03-29 20:33:56
180
1
原创 《TCP/IP网络编程》课后练习第十三章(自己写的,非标准答案)
writev函数可以将分散保存在多个缓冲中的数据一并发送,readv函数可以由多个缓冲分别接收,适当使用这2个函数可以减少I/O函数的调用次数。MSG_DONTWAIT调用I/O函数时不阻塞,用于使用非阻塞I/O。同时设置MSG_PEEK选项和MSG_DONTWAIT选项。MSG_PEEK验证输入缓冲中是否存在接收的数据。可以通过select函数监测发生异常的套接字。
2024-03-29 11:58:28
145
1
原创 《TCP/IP网络编程》课后练习第十二章(自己写的,非标准答案)
Linux的文件描述符从0开始递增,因此可以找出当前文件描述符数量和最后生成的文件描述符之间的关系,但Windows的套接字句柄并非从0开始,而且句柄的整数值之间并不规律可循,因此需要直接保存句柄的数据和记录句柄数的变量。创建进程时需要付出极大代价,需要大量运算和内存空间,进程相互间的数据交换也要求采用相对复杂的方法。包含到是否存在待读取数据这一类监听对象集合,服务端套接字中有接收的数据说明有新的连接请求。为了提高物理设备的效率,用最少的物理要素传递最多数据时使用的技术。用一个进程连接较多的客户端。
2024-03-28 11:19:22
270
原创 《TCP/IP网络编程》课后练习第十一章(自己写的,非标准答案)
不同进程具有完全独立的内存结构,只能访问自己的内存空间,无法访问一块共享的内存空间,需要操作系统的帮助。进程间通信指不同进程访问同一块内存空间,根据访问的值的改变来进行通信。b.通过pipe函数创建的出入口的文件描述符连接到同一管道。进程间通信指不同进程间交换数据的过程。a.由进程通过pipe函数创建。c.双向通信需要创建2个管道。
2024-03-27 16:59:49
197
原创 《TCP/IP网络编程》课后练习第十章(自己写的,非标准答案)
子进程自身终止后,将结束状态值传递给操作系统,而操作系统不会销毁子进程,直到把这些值传递给产生该子进程的父进程,处在这种状态下的进程就是僵尸进程。可以利用wait函数和waitpid函数来主动请求获取子进程的返回值以销毁僵尸进程。
2024-03-27 14:12:48
213
原创 《TCP/IP网络编程》课后练习第九章(自己写的,非标准答案)
发送数据传入输入缓冲的速度相对于接收前一数据的ACK消息较快时需要禁用Nagle算法。
2024-03-26 17:46:58
136
原创 《TCP/IP网络编程》课后练习第八章(自己写的,非标准答案)
假设默认DNS服务器收到自己无法解析的请求时会向上级DNS服务器询问,到达顶级DNS服务器时,由它指向向哪个下级DNS传递解析请求,得到IP地址后原路返回。修改服务器地址可行,不过不一定要改成自己学校的,可以改成223.5.5.5、8.8.8.8等。
2024-03-25 18:14:20
102
原创 《TCP/IP网络编程》课后练习第七章(自己写的,非标准答案)
主机A发送完最后的数据调用close函数断开了连接,之后主机A无法再接收主机B传输的数据,在主机A发送数据后,断开连接前这段时间主机B传输的、主机A必须接收的数据也销毁了。UDP没有连接的概念,即使调用connect函数也并非意味着要与对方UDP套接字连接,只是向UDP套接字注册目标IP和端口信息,无法形成流。无法传输数据,但如果输出缓冲还留有未传输的数据,则将传递至目标主机。两台主机通过套接字建立连接后进入可交换数据的状态。关闭套接字的输入流或输出流。接收到相应流关闭的消息。
2024-03-25 11:40:35
203
原创 《TCP/IP网络编程》课后练习第六章(自己写的,非标准答案)
IP的作用是让离开发送主机的UDP数据包准确传递到目标主机,UDP最重要的作用就是根据端口号将传到主机的数据包交付给最终的UDP套接字。上述三个阶段中,第一个和第三个阶段占整个通信过程近1/3的时间,调用connect函数后,每次调用sendto函数只需传输数据。如果调用sendto函数时发现尚未分配地址信息,则在首次调用sendto函数时给相应套接字自动分配IP和端口。UDP在结构上比TCP更简洁,UDP不会发送类似ACK的应答消息,也不会像SEQ那样给数据包分配序号。TCP中的SEQ号可以确认是否。
2024-03-22 21:31:37
192
原创 《TCP/IP网络编程》课后练习第五章(自己写的,非标准答案)
主机A会先向主机B发送SEQ: numA0号的dataCnt byte的数据包,如果主机B收到dataCnt byte的数据包则会传递ACK:numA0 + dataCnt + 1信息,如果超时A未收到B的信息或者ACK不对,则主机A 会重传数据包。numB0代表主机B传递的数据包序号,numA0 + 1代表主机A传递的numA0号的数据包无误,可以传递numA0 + 1号的数据包,这次握手意味着主机B已经准备就绪。numA0代表主机A传递的数据包序号,这次握手意味着主机A已经准备就绪。
2024-03-07 20:58:16
326
1
原创 《TCP/IP网络编程》课后练习第四章(自己写的,非标准答案)
链路层是IP层的基础,链路层是物理链接领域标准化的结果,,也是最基本的领域,专门定义LAN、WAN、MAN等网络标准,IP层是传输数据的路径选择所使用的协议。链路层:链路层是物理链接领域标准化的结果,也是最基本的领域,专门定义LAN、WAN、MAN等网络标准。调用connect函数时,操作系统的内核中,IP用计算机(主机)的IP和随机端口分配地址。TCP套接字和UDP套接字的层级差异是以上4层协议栈中的TCP层和UDP层的差异。IP层:传输数据的路径选择所使用的协议。调用listen函数时。
2024-03-05 11:00:41
180
1
原创 《TCP/IP网络编程》课后练习第三章(自己写的,非标准答案)
因为结构体sockaddr并非只为IPv4设计,传递的IP地址和端口号都应保存在成员sa_data中并且需要在剩余部分填充0,直接写入sa_data成员比较麻烦,因此需要保存IPv4地址信息的结构体sockaddr_in,sockaddr_in中IP,端口号,剩余的0分别在三个成员中,较容易操作。首先浏览IPv4地址中的网络地址(网络ID),先将数据传到公司网络,构建公司网络的路由器接收到数据后,浏览传输数据的主机地址(主机ID)并将数据传给目标计算机。小端序:高位字节存放到高位地址。
2024-03-04 14:45:46
144
1
原创 《TCP/IP网络编程》课后练习第二章(自己写的,非标准答案)
传输的数据不存在数据边界:收发数据的套接字内部有缓冲,通过套接字传输的数据将保存在该缓冲,只要不超过缓冲容量,收到数据不意味着马上调用read函数,可通过一次或多次的read函数读取,同理,发送数据时也能一次或多次调用write函数。传输过程数据不会丢失:除特殊情况外,面向连接的的套接字不会发生数据丢失。协议在数据传输的一致性,可靠性,安全性等方面具有重要意义。按序传输数据:先发的数据先到达,晚发的数据晚到达。协议就是为了完成数据交换而定好的约定。面向连接的套接字不存在数据边界。套接字连接必须一一对应。
2024-02-27 12:53:48
416
原创 《TCP/IP网络编程》课后练习第一章(自己写的,非标准答案)
Linux系统中socket被认为是文件的一种,而在Windows系统中,要区分socket和文件。套接字本身就带有“连接”的含义,如果将其引申,则还可以表示两台计算机之间的网络连接。listen将套接字转化成可接收连接的状态,并为套接字设置挂起的连接队列的最大长度。套接字的文件描述符是套接字经过创建过程后系统分配给套接字的整数。Windows的套接字句柄是套接字创建完成后的返回值。因为套接字的实现网络数据传输流程要求的。套接字的作用是网络数据传输。accept受理连接请求。
2024-02-26 17:52:45
258
1
原创 《Windows核心编程》injLib程序可能中文乱码的解决方法
在这里创建变量用GetModuleFileNameEx函数来获取文件路径即修改为下面这样即可。
2023-10-19 19:33:10
64
1
原创 C++利用ifstream和ostream插入字符
/ ConsoleApplication1.cpp : 此文件包含 "main" 函数。// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目。// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件。// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单。// 1. 使用解决方案资源管理器窗口添加/管理文件。// 调试程序: F5 或调试 >“开始调试”菜单。
2023-03-03 17:27:30
150
空空如也
C++智能指针构造函数使用错误
2023-04-12
命名空间中包含头文件报错
2023-04-04
函数模板重载操作符小于号会报错找不到函数定义
2023-03-29
使用正则表达式查找字符串错误
2023-03-29
《windows程序设计》TEXT函数错误
2023-03-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人