![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
文章平均质量分 95
tilblackout
score til you black out.
展开
-
Linux socket编程(12):Unix套接字之socketpair、sendmsg和recvmsg详解
在上一篇文章中,我们对Unix套接字编程有一个基本的了解。socketpairsendmsg和recvmsg,它们为实现本地进程间通信提供了便捷的方式。原创 2023-12-07 07:00:00 · 1266 阅读 · 0 评论 -
Linux socket编程(11):Unix套接字编程及通信例子
Unix套接字是一种用于在同一台计算机上的进程间通信的一种机制。它是Linux和其他类Unix系统中的一项特性,通过在文件系统中创建特殊的套接字文件,进程可以通过这些套接字文件进行通信。原创 2023-12-06 07:00:00 · 697 阅读 · 0 评论 -
Linux socket编程(10):UDP详解、聊天室实现及进阶知识
与TCP不同,UDP是一种无连接的、不可靠的传输协议。相比于TCP,UDP更加轻量级,没有连接的建立和断开过程,也没有复杂的流控制和拥塞控制机制。UDP直接将数据包发送到目标地址,不保证数据的顺序和可靠性,因此在某些实时性要求较高、可以容忍少量数据丢失的应用场景中表现得更为适用。原创 2023-12-05 07:00:00 · 585 阅读 · 0 评论 -
Linux socket编程(9):IO复用之poll和epoll详解
在之前的文章中,我们学习了,但是select有监听描述符个数的限制,而且select的效率并不高,所以这篇文章就来学习效率更高的poll和Linux特有的epoll方法。原创 2023-12-04 07:00:00 · 214 阅读 · 0 评论 -
Linux socket编程(7):I/O系统调用(读/写/连接)的超时处理
在网络编程中,对套接字的I/O的系统调用(如readwriteconnect)进行超时处理是至关重要的,特别是在需要响应及时的实时数据或避免无限期阻塞的情境下。setsockopt和select。setsockopt允许直接设置套接字的发送和接收超时时间,而select提供了一种多路复用的机制,使得在等待多个套接字就绪时能够设置超时。原创 2023-11-28 07:00:00 · 1054 阅读 · 0 评论 -
Linux socket编程(8):shutdown和close的区别详解及例子
close和shutdown。但这两种函数在使用时有着不同的行为和效果。在网络编程中,正确地选择和使用这些操作至关重要,因为它们直接影响着通信的结束和资源的释放。本文将介绍close和shutdown函数,然后举一个实际的例子来说明shutdown的使用。原创 2023-11-30 07:00:00 · 742 阅读 · 0 评论 -
Linux socket编程(6):IO复用之select原理及例子
在之前的网络编程中,我们遇到了一个问题:客户端需要一边监听来自stdin的键盘输入,一边监听来自服务端的消息服务端要一边获取来自客户端的消息,一边accept新的设备连接也就是我们希望在一个或多个I/O条件准备就绪时,能够得到通知。在前面的文章中,我们使用Linux中的fork。但在Linux中还有一个I/O多路复用的概念,它由select和poll函数实现,这篇文章就来介绍一下多路复用的概念。原创 2023-11-27 07:00:00 · 697 阅读 · 2 评论 -
Wireshark抓包:理解TCP三次握手和四次挥手过程
TCP是一种面向连接、端到端可靠的协议,它被设计用于在互联网上传输数据和确保成功传递数据和消息。本节来介绍一下TCP中的三次握手和四次挥手。原创 2023-11-21 07:00:00 · 2211 阅读 · 2 评论 -
Linux socket编程(5):三次握手和四次挥手分析和SIGPIPE信号的处理
在我之前写的中,通过抓包分析了TCP传输的三次握手和四次挥手的过程。在这一节中,将分析在Linux中的三次握手和四次挥手的状态和过程,另外还有一个在我们编程过程中值得注意的SIGPIPE信号的处理。原创 2023-11-22 07:00:00 · 672 阅读 · 0 评论 -
Linux socket编程(4):服务端fork之僵尸进程的处理
僵尸进程()是操作系统中的一种特殊进程状态,它通常出现在一个子进程终止,但其父进程尚未能够处理该子进程的终止状态。特点僵尸进程不执行任何代码,它们仅仅是一个进程描述符和一些状态信息,如退出状态码,占用少量系统资源。如果大量的僵尸进程积累,可能会导致系统资源耗尽。解决方法当子进程终止时,父进程可以使用wait()或waitpid()等系统调用来等待子进程的退出状态信息,从而释放子进程的资源,同时告知操作系统可以回收子进程的进程表项另一种方法是使用信号处理程序,在父进程中注册SIGCHLD。原创 2023-11-20 07:00:00 · 419 阅读 · 0 评论 -
Linux socket编程(3):利用fork实现服务端与多个客户端建立连接
上一节,我们实现了一个,在这个例子中,客户端连接上服务端后发送一个字符串,而服务端接收到字符串并打印出来后就关闭所有套接字并退出了。上一节的代码较为简单,在实际的应用中,客户端和服务端需要像一个聊天室一样能够收发信息,但这样就引出了一些问题:1、服务端程序需要既能accept新的客户端请求,又能实时获与已经建立连接的客户端发来的消息2、客户端程序需要既能从stdin获取用户输入,又能实时获取从服务端发来的消息下面就来解决这两个问题。原创 2023-11-15 07:00:00 · 835 阅读 · 1 评论 -
Linux socket编程(2):socket函数介绍及C/S模型代码实现
上一节简单介绍了一下的概念,算是对socket有一个入门的了解。这一节就实现一个客户端-服务端的代码,从这个例子中来学习socket函数的使用。原创 2023-11-14 07:00:00 · 641 阅读 · 0 评论 -
Linux socket编程(1):套接字、字节序和地址结构体
计算机网络由多个层组成,每个网络层提供关于该层数据的不同限制。而套接字的本意是提供一种进程间通信的方法,使得在相同或不同主机上的进程能够以相同的规范进行双向的信息传送。如下图所示,套接字接口提供了对网络下层(1-4层)的统一API,并能套接字应用程序中实现上层(5-7层和应用格式)功能。套接字是一种通用的编程接口,可以用于与不同类型的网络协议进行交互,不仅仅限于IP协议,还有UDP、ICMP等。在实际应用中,套接字应用程序通常会依赖于IP协议来实现网络通信。在传输层,套接字支持两种特定的协议:TCP(原创 2023-11-13 07:00:00 · 475 阅读 · 0 评论