UNIX 网络编程学习】的更多相关文章

epoll是select/poll的强化版,都是多路复用的函数,epoll有了很大的改进. epoll的功能 1.支持监听大数目的socket描述符 一个进程内,select能打开的fd是有限制的,有宏FD_SETSIZE设置,默认值是1024.z在某些时候,这个数值是远远不够用的.解决方法有两种,已是修改宏然后再重新编译内核,但与此同时会引起网络效率的下降;二是使用多进程来解决,但是创建多个进程是有代价的,而且进程间数据同步没有多线程间方便.而epoll没有这个限制,它所支持的最大FD上限远远…
前言 当把套接口地址结构传递给套接口函数时,总是通过指针来传递的,即传递的是一个指向结构的指针.结构的长度也作为参数来传递,其传递的方式取决于结构的传递方向:从进程到内核,还是从内核到进程. 1.从进程到内核 从进程到内核传递套接口地址结构的函数有3个:bind.connect和sendto,这3个函数的一个参数是指向套接口地址结构的指针,另一个参数是结构的整数大小,例如: /* example */ struct sockaddr_in serv; /* fill in serv{} */ c…
a.述 书买很久了,好好学习下.O(∩_∩)O  只写程序,原理什么的,先不写了. b.环境 deepin15.4.1 64位 vs code gcc version 6.4.0 20170724 (Debian 6.4.0-2) 虚拟机里跑的 没在物理机安装 1.2一个简单的时间获取程序 /** * TCP_getDayTime.c * 安装时间服务 * sudo apt-get install xinetd -y * * 修改yes 为 no * sudo vi /etc/xinetd.d/…
#include "unp.h" int main(int argc , char**argv) { int sockfd , n; //sockfd套接字描述符 ]; struct sockaddr_in servaddr; /*sockaddr_in={ * short sin_family; 地址族 * unsigned short sin_port; 端口号,必须采用网络数据格式,可用htons()函数将数字转换为网络数据格式 * struct in_addr sin_addr…
今天在学习accept函数的时候,在执行服务器程序的时候,碰到了如下的出错信息: bind error: Address already in use 其原因在于服务器程序使用了13号的端口; 然而在我们用netstat -tanlp查看的时候发现: Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name tcp        0      0 127.0.1…
一. 简单介绍 如果我们本章讨论的主机都是支持双栈的,即支持IPv4地址.也支持Ipv6地址. 我们本次讨论的点:client与server端使用的是不同类型的地址.由于同样类型的地址没什么可讲的. 二. IPv4client与IPv6server 即.client使用IPv4地址套接字来通信,server端使用IPv6地址套接字通信. 原理: 0. 首先IPv6server主机保证既有IPv4地址,又有IPv6地址. 1. IPv4client通过getaddrinfo函数.找到server端…
getsockname和getpeername #include <sys/socket.h>int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen);int getpeername(int sockfd, struct sockaddr *peeraddr, socklen_t *addrlen);返回:0—OK,-1—出错. getsockname函数返回与套接口关联的本地协议地址. getpee…
ICMP的一个规则是,ICMP差错报文必须包括生成该差错报文的数据报IP首部(包含任何选项),还必须至少包括跟在该IP首部后面的前8个字节(包含源端口和目的端口).在我们的例子中,跟在IP首部后面的前8个字节包含UDP的首部. 我们利用前面博客中UNIX网络编程学习(18)中UDP回射程序,不开启服务器端程序,只开启客户程序,发送出一个hello,没有回应,但是用wireshark抓包,会有: 根据上述ICMP格式: 76 = 14+20+8+20+8+6(hello占6字节) 同时,我们也可以…
<UNIX网络编程 卷1>的源码可以从www.unpbook.com下载得到.解压之后的目录为unpv13e. 详细步骤 编译 进入unpv13e目录,按如下步骤编译: ./configure cd lib make // 可能遇到问题:redefinition of ‘struct in_pktinfo’ cd ../libfree make cd ../libroute make //这一步可能会出错,可忽略,只是表示你的系统不支持 4.4BSD,并不影响对该书的学习 cd ../libg…
实验一 TCP数据发送与接收 [实验目的] 1.熟练掌握套接字函数的使用方法. 2.应用套接字函数完成基本TCP通讯,实现服务器与客户端的信息交互. [实验学时] 4学时 [实验内容] 实现一个服务器与一个客户之间通讯.具体功能如下: (1)服务器端: 服务器端等待客户的连接,一旦连接成功,则显示客户的IP地址.端口号: 循环接收客户发来的信息并在终端上显示,同时在信息前加入序号并返回给客户端:当从客户接收到bye后不再发送给各户并退出程序. (2)客户端: 根据用户从终端输入的服务器IP地址及…