![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UNIX网络编程
sanmao0816
这个作者很懒,什么都没留下…
展开
-
unp.h undefined reference to `Socket'
关于unp.h在linux上的配置问题。由于UINX网络编程这本书,使用了自己的头文件--unp.h,所以,如我们自己学习书上的源代码时,需要我们自己配置头文件来。首先在官网www.unpbook.com,主页上去下载UNIX网络编程这本书的源码,并解压tar -jxvf ...tar.bz2,解压完成后,$./configure然后,进入lib目录下运行make,编译完成后,在解原创 2015-01-12 23:23:49 · 2424 阅读 · 0 评论 -
readn,writen,readline函数
字节流套接字上的read和write函数所表现的行为不同于通常的文件I/O。字节流套接字上调用的read和write输入或输出的字节数可能比请求的数量少,然而这不是出错的状态,这个现象的原因在于内核中用于套接字的缓冲区可能已达到了极限, 此时所需要的是调用者再次调用read和write函数,以输入或输出剩余的字节。为防止万一,不让实现返回一个不足的字节计数值,我们总是改为调用readn和writen原创 2015-03-16 12:33:17 · 1116 阅读 · 0 评论 -
字节序测试函数
字节排序函数 考虑一个16位的整数,它由2个字节组成,内存中存储这两个字节有两种方法,一种是将低序字节存储在起始地址,这称为小端(little–endian)字节排序;另一种是将高序字节存储在起始地址,这称为大端(big–endian)字节序。如图所示: 在该图中,我们在顶部标明内存增长的方向为从右到左,在底部标明内存地址增长的方向为从左到右。我们还标明最高有效位(MSB)是这个16位值最左原创 2015-03-16 10:07:57 · 677 阅读 · 0 评论 -
socket函数
为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型#include <sys/socket.h>int socket(int family, int type, int protocol); 返回:若成功则为非负的描述符,若出错则为-1其中,family参数指明协议族,图1中所示的某个常值,该参数也往往被称为协议域。type参数指明原创 2015-03-16 16:12:07 · 458 阅读 · 0 评论 -
inet_aton、inet_addr、inet_ntoa函数
inet_aton、inet_addr、inet_ntoa函数 (1)inet_aton、inet_addr、inet_ntoa在点分十进制数串与它长度为32为的网络字节序二进制值间转换IPv4地址。#include <arpa/inet.h>int inet_aton(const char *strptr, struct in_addr *addrptr);原创 2015-03-16 11:07:19 · 1417 阅读 · 0 评论 -
inet_pton、inet_ntop函数
inet_pton和inet_ntop函数 这两个函数是随IPv6出现的函数,对于IPv4地址和IPv6地址都适用,函数中p和n分别代表表达(presentation)和数值(numeric)。地址的表达格式通常是ASCII字符串,数值格式则是存放到套接字地址结构的二进制值。#include <arpe/inet.h>int inet_pton(int family, const char *s原创 2015-03-16 11:54:57 · 4608 阅读 · 0 评论 -
UDP协议/套接字
每个套接字都有一个发送缓冲区和一个接受缓冲区。接收缓冲区被TCP、UDP和SCTP用来保存接收到的数据,直到由应用进程来读取。对于TCP来说,套接字接收缓冲区中可用空间的大小限定了TCP通告对端的窗口。TCP套接字接收缓冲区不可能溢出,因为不允许对端发出超过本端所通告窗口大小的数据。这就是TCP的流量控制。如果对端无视窗口大小而发出来了超过该窗口大小的数据,本端TCP将丢弃它们。然而对于UDP原创 2015-01-17 21:14:57 · 727 阅读 · 0 评论 -
shutdown函数
终止网络连接的通常方法是调用close函数,不过close有两个限制,却可以使用shutdown来避免。(1)close把描述符的引用计数减1,仅在该计数变为0时才关闭套接字,使用shutdown可以不管引用计数就激发TCP的正常连接终止序列。(2)close终止读和写两个方向的数据传送。既然TCP连接是全双工的,有时我们需要告知对端我们已经完成了数据发送,即使对端任然有数据要发送给我们。原创 2015-01-16 21:33:03 · 1052 阅读 · 0 评论 -
套接字I/O模型
在UNIX下可用的5种I/O模型为:柱塞I/O模型非柱塞I/O模型I/O复用(select和poll)信号驱动式I/O(SIGIO)异步I/O柱塞式I/O模型最流行的I/O模型是柱塞式I/O模型,默认情况下所有套接字都是用柱塞的,以数据报套接字为例子,如图:进程调用recvfrom,其系统调用指导数据报到达且被复制到应用进程的缓冲区中或发生错误才返回原创 2015-01-16 12:46:50 · 676 阅读 · 0 评论 -
connect函数
TCP客户用connect函数来建立与TCP服务器的连接。#include <sys/socket.h>int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);sockfd是由socket函数返回的套接字描述符,第二个参数、第三个参数分别是一个指向套接字地址结构的指针和该结构的大小。套接字地址结构必须含原创 2015-03-16 21:14:51 · 1932 阅读 · 0 评论