网络
fdssdfdsf
这个作者很懒,什么都没留下…
展开
-
tcp/ip缓冲区
首先,要知道缓冲区是为了解决不同网络层次之间的速度不匹配问题。 每个tcp套接字都有一个发送缓冲区,用SO_SNDBUF表示其大小。在发送方和接收方的数据链路层分别有一个发送缓冲区和接收缓冲区。 应用层进程将发送内容交给TCP套接字中的缓冲区,然后TCP又最终将发送内容交到数据链路层的缓冲区中。发送方的数据通过数据链路到达接收方的缓冲区。其中接收方的缓冲区要能容纳下发送方的数据,采取的措施原创 2012-09-05 09:56:09 · 1297 阅读 · 0 评论 -
tcp长连接与短连接
长连接就是在TCP建立连接后,读写一次数据完成之后并不立即释放连接,而短连接是在一次TCP连接之后只进行一次数据的读写就释放连接。 编程中要使一个套接字所建立的连接成为长连接,可以使用setsockopt()函数。它使用的是TCP的keepalive定时功能,利用sysctl -a|grep tcp_keepalive可以查看内核中对keepalive的设置。 net.ipv4.tcp_kee原创 2012-10-03 14:37:26 · 1668 阅读 · 0 评论 -
select,poll,epoll总结
select,poll,epoll这三个函数是服务器端开发必须要精通的函数,而且也是面试中常会问到的知识。 其中select和poll的功能比较相似,而epoll是linux所特有的,是linux对poll的改进版。以下是这三个函数的主要特点: select: 1.select对每个所监视的描述符进行轮循,当描述符增加时,select的效率就会下降; 2.select所能监视的描述符是原创 2012-10-03 15:55:13 · 1155 阅读 · 0 评论 -
UDP调用connect()的作用
我们都知道,UDP是无连接的,但是为什么协议让UDP也可以调用connect()? 1.因为UDP可以是一对一,多对一,一对多,或者多对多的通信,所以每次调用sendto()/recvfrom()时都必须指定目标IP和端口号。通过调用connect()建立一个端到端的连接,就可以和TCP一样使用send()/recv()传递数据,而不需要每次都指定目标IP和端口号。但是它和TCP不同的是它没有三原创 2012-10-04 17:25:45 · 5616 阅读 · 0 评论 -
端口查看和复用
端口查看 1.查看端口信息有三种方式: a.netstat b.lsof c./etc/services 2.端口复用 使用setsockopt()函数的SO_REUSEADDR和SO_REUSEPORT选项。原创 2012-10-04 18:17:25 · 693 阅读 · 0 评论