![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络
zhangge3663
这个作者很懒,什么都没留下…
展开
-
setsockopt()和getsockopt()函数参数
setsockopt()函数功能介绍功能描述:获取或者设置与某个套接字关联的选项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该将层的值指定为SOL_SOCKET,为了操作其他层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议号TCP。getsoc...转载 2020-04-29 16:33:48 · 300 阅读 · 0 评论 -
select函数及fd_set介绍
1. select函数1. 用途 在编程的过程中,经常会遇到许多阻塞的函数,好像read和网络编程时使用的recv, recvfrom函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执行下面的代码。这时就需要用到非阻塞的编程方式,使用select函数就可以实现非阻塞编程。 select函数是一个轮循函数,循环询问文件节点,可设置超时时间,...转载 2020-04-29 15:24:02 · 393 阅读 · 0 评论 -
TCP粘包和拆包原因
最近研究Netty网络编程,以前项目中页遇到过数据接收过程中数据质量太差问题,很可能是TCP传输过程中问题,特此记录。问题产生一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和封包问题。下面可以看一张图,是客户端向服务端发送包:1.第一种情况,Data1和Data2都分开发送到了Server端,没有产生粘...转载 2020-01-31 15:27:55 · 608 阅读 · 0 评论 -
getsockname和getpeername测试
在两台计算机上建立一个网络连接,需要五个要素:本机地址、本机端口、协议类型、远端端口、远端地址,那么如何从一个建立好的连接上获取这些信息呢?就需要用到 getsockname和getpeername这两个函数。但前提是要在建立好的连接上。作为客户端,要在正确调用connect()之后,才能使用这两个函数作为服务端,要在正确调用accept()之后,才能使用这两个函数以下为...转载 2018-10-17 11:51:39 · 992 阅读 · 0 评论 -
使用gethostname()函数和gethostbyname()函数获取主机相关信息
gethostname():返回本地主机的标准主机名原型如下:#include <unistd.h>int gethostname(char *name, size_t len);参数说明:这个函数需要两个参数: 接收缓冲区name,其长度必须为len字节或是更长,存获得的主机名。 接收缓冲区name的最大长度:返回值: 如果函数成功,则返回0。如果发生错...转载 2018-10-17 12:22:39 · 17989 阅读 · 0 评论 -
tcpdump源码分析——抓包原理
本篇我们从总体看下tcpdump工具的抓包原理,通过学习了解并掌握其实现的机制,为后续进一步底层操作做准备。1.1.1.1 如何实现先来看看包传递过来的流程,如下图。包从网卡到内存,到内核态,最后给用户程序使用。我们知道tcpdump程序运行在用户态,那如何实现从内核态的抓包呢?这个就是通过libpcap库来实现的,tcpdump调用libpcap的api函数,由libpcap进入到内...转载 2018-12-06 19:24:26 · 3031 阅读 · 0 评论