网络编程
文章平均质量分 94
Alpha205
非计算机专业,学过的东西,做一点记录
展开
-
TCP/IP网络编程(11) 套接字和标准IO
此外,为了使用标准的IO函数,需要传入FILE结构体指针,而在创建套接字的时候,默认返回的是文件描述符,因此需要额外将文件描述符转换为FILE指针。套接字中的缓冲区主要是为了实现TCP协议而设立的,TCP在传输数据的过程中,如果丢失了数据,将会再次进行传输,而再次发送数据,意味着数据保存在了某个地方,并没有丢失,保存的地方就是套接字的输出缓冲区。使用标准IO函数还有一个好处,就是可以按字符串单位进行交换,而在前面的回声服务器的示例代码中,接收到的数据需要先转换为字符串(在数据的尾部插入0)。原创 2022-12-29 11:07:49 · 629 阅读 · 4 评论 -
TCP/IP网络编程(10) IO函数
在Linux下,一般使用read & write函数完成数据IO,因为Linux下的套接字,可视为文件,其操作方式与文件类似,当套接字分配之后,会为其分配对应的文件描述符。在Windows下,则需要使用recv & send函数完成数据IO。原创 2022-11-17 22:12:31 · 1000 阅读 · 0 评论 -
TCP/IP网络编程(8) 基于Linux的多进程服务器
接着服务端接收到客户端发送来的的EOF,并将其返回给客户端(此时客户端的接收功能并未关闭,还能正常接收服务端的EOF),客户端在判断接收到服务端发送来的EOF之后,结束接收流程,也同样调用main中后续的代码,执行close和return,此时客户端的socket又被关闭了一次,至此,客户端中的socket被成功关闭,子进程和父进程都结束。fork函数创建的是调用它的进程的副本,即它是复制正在运行的,调用fork函数的进程,此外,在fork()函数返回后,两个进程都将执行fork()函数后面的语句。....原创 2022-07-30 18:15:10 · 743 阅读 · 0 评论 -
TCI/IP网络编程(7) 多播与广播
应用场景:假设服务端需要同时向10000个客户端发送同样的通知消息,如果利用TCP,需要维护10000个套接字连接,如果是基于UDP,也需要进行10000数据传输,向大量客户端发送相同的数据,会对服务器端和网络流量产生负面的影响。多播方式的数据传输是基于UDP完成的,因此其与UDP客户端/服务端的实现方式,区别在于,UDP传输以单一目标地址进行,而多播模式下,数据会同时传递到所有加入注册组的的主机,即采用多播方式的时候,可以同时向多个主机传输相同的数据。多播的数据传输特点:多播组是D类IP地址(244.0原创 2022-07-10 17:08:38 · 1231 阅读 · 0 评论 -
TCP/IP网络编程(5)
1. 套接字可选项除了使用套接字的默认参数外,还可自定义设置套接字的多种参数:套接字的参数 协议层 选项名 读取 设置 SOL_SOCKET SO_SNDBUF O SO_RCVBUF O IPPROTO_IP .原创 2022-05-21 11:22:19 · 796 阅读 · 0 评论 -
TCP/IP网络编程(4)
TCP套接字的半关闭TCP的断开过程比建立连接的过程更加的重要,一般在建立连接的过程中不会出现大的问题,但是在断开连接的过程中,可能发生预想不到的情况。Linux中的close函数和windows下的closesocket函数意味着完全断开连接,既不能传输数据,也不能接收数据,因此在某些条件下,直接调用这两个函数显得不够优雅。如下图所示:假设主机A与主机B在进行通讯,主机A发送完最后的数据,调用close函数断开连接,之后主机A再无法收到数据B传输的数据,因此,由主机B传输的,主机A必须接收原创 2022-04-26 21:49:41 · 592 阅读 · 0 评论