E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
UNPV1
文件io与网络套接字
1.read、readn、readline(
unpv1
)read调用一次通常会出现不足值的情况(尤其是读取网络套接字),调用readn防止出现不足值情况。
dfadsg
·
2020-08-14 06:06
unix环境编程
Unix 网络编程卷一源码编译踩坑记录 ubtutu 19.10
在阅读
unpv1
时运行源代码的环境配置,这里简单记录一下源代码里的README写得挺详细的,但是在Linux系统的下还是没办法直接编译通过的,这里我使用的是ubuntu19.10(在腾讯云ubuntuserver18.04.1
平凡键客
·
2020-04-04 19:00
UNPv1
第二十六章:数据链路访问
1.概述目前大多数操作系统都为应用程序提供了访问数据链路层的手段,它使得应用程序拥有如下功能:监视数据链路层上的所收到的分组,这使得我们可以在普通计算机系统上通过tcpdump来检测网络,而无需使用特殊的硬件设备作为普通应用进程而不是内核的一部分运行某些程序Unix上三种最常用的数据链路访问方法BSD的BSD分组过滤器BPFSVR4的数据链路提供者接口DLPILinux的SOCK_PACKET接口
lxj1137800599
·
2016-04-26 14:00
UNPv1
第二十五章:原始套接口
1.概述原始套接口提供以下三种TCP及UDP套接口一般不提供的功能。1.使用原始套接口可以读写ICMPv4,IGMPv4,ICMPv6分组。例如:Ping程序,就使用原始套接口发送ICMP回射请求,并接受ICMP回射应答。2.使用原始套接口可以读写特殊的IPv4数据报,内核不处理这些数据报的IPv4协议字段。3.利用原始套接口,好似用IP_HDRINCL套接口选项可以构造自己的IPv4头部。2.原
lxj1137800599
·
2016-04-26 14:00
UNPv1
第二十三章:线程
在传统的UNIX模型中,当一个进程需要由另一个实体执行某件事时,该进程派生(fork)一个子进程,让子进程去进行处理。UNIX下的大多数网络服务器程序都是这么编写的,这在我们的并发服务程序例子中可以看出:父进程接收连接,派生子进程,子进程处理与客户的交互。虽然这种模式很多年来使用的很好,但是fork有一些问题:fork是昂贵的。内存映像要从父进程拷贝到子进程,所有描述字要在子进程中复制等等。目前的
lxj1137800599
·
2016-04-26 14:00
UNPv1
第二十二章:信号驱动IO
1.概述信号驱动是指进程预先告知内核,使得当某个描述符上发生某事时,内核使用信号通知相关进程。需要注意的是这里描述的信号驱动不是真正的异步I/O。注意第16章描述的非阻塞I/O同样不是异步I/O。对于非阻塞I/O,内核一旦启动,I/O操作就不像异步I/O那样立即返回到进程,而是等到I/O操作完成或遇到错误;内核立即返回的唯一条件是I/O操作的完成不得不把进程投入睡眠,这种情况下内核不启动I/O操作
lxj1137800599
·
2016-04-26 13:00
UNPv1
第二十一章:带外数据
1.概述带外数据被认为具有比普遍数据更高的优先级。带外数据并不要求在客户和服务器之间在使用一个连接,而是被映射到已有的连接中2.TCP带外数据TCP没有真正的带外数据,而是提供了一个我们要讨论的紧急模式(urgentmode)。假设一个进程已向一个TCP套接口写入了N字节数据,并且这些数据被TCP放入套接口发送缓冲区等待发送给对方。下图展示了这种状态,并且标记了从1到N的数据字节。进程现在使用se
lxj1137800599
·
2016-04-26 13:00
UNPv1
第二十章:高级UDP套接口编程
1.接收标志、目的IP地址和接口索引作为recvmsg的一个例子,我们将要写一个名为recvfrom_flags的函数,它与recvfrom类似,但他还返回:返回的msg_flags值收到的数据报的目的地址(通过设置IP_RECVDSTADDR套接口选项)接收数据报接口的索引(通过设置IP_RECIF套接口选项)为了返回最后两项,我们定义如下结构:structin_pktinfo{ structi
lxj1137800599
·
2016-04-26 13:00
UNPv1
第十九章:多播
单播地址标识单个接口,广播地址标识所有接口,多播地址标识一组接口。多播数据报仅对感兴趣的接口接收。单播、广播、组播的区别小结(源自http://www.cnblogs.com/Ewin/archive/2008/11/25/1340752.html)1.单播:主机之间一对一的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次
lxj1137800599
·
2016-04-26 13:00
UNPv1
第十八章:广播
1.广播地址如果用{netid,subnetid,hostid}({网络ID,子网ID,主机ID})表示IPv4地址。那么有四种类型的广播地址,我们用-1表示所有比特位均为1的字段:1).子网广播地址:{netid,subnetid,-1}。这类地址编排指定子网上的所有接口。2).全部子网广播地址:{netid,-1,-1}。这类广播地址编排指定网络上的所有子网。3).网络广播地址:{netid,
lxj1137800599
·
2016-04-26 13:00
UNPv1
第十七章:路由套接口
1.概述在路由器接口中支持三种类型的操作1).进程能通过写路由套接口向内核发消息。2).进程能在路由套接口上从内核读消息,这是核心通知进程已收到一个ICMP重定向消息并进行了处理的方式。3).进程可以用sysctl函数得到路由表或列出所有已配置的接口。2.数据链路套接口地址结构在路由套接口上返回的一些消息中包含数据链路套接口地址结构,他在structsockaddr_dl{ uint8_tsdl
lxj1137800599
·
2016-04-26 13:00
UNPv1
第十五章:非阻塞IO
1.阻塞的套接口调用可分为以下四种:1).输入操作:read,readv,recv,recvfrom和recvmsg函数。2).输出操作:write,writev,send,sendto和sendmsg函数。3).接收外来连接:accept函数4).初始化外出的连接:用于TCP的connect函数2.非阻塞读和写我们维护两个缓冲区:to容纳从标准输入到服务器去的数据,fr容纳自服务器到标准输出来的
lxj1137800599
·
2016-04-26 11:00
UNPv1
第十四章:Unix域协议
Unix域协议并不是一个实际的协议族,它只是在同一台主机上进行客户-服务器通信时,使用与在不同主机上的客户和服务器间通信时相同的API(套接口或XTI)的一种方法。当客户和服务器在同一台主机上时,Unix域协议是IPC通信方式的一种替代品。Unix域提供了两种类型的套接口:字节流套接口(与TCP类似)和数据报套接口(与UDP类似)。1.Unix域套接口地址结构structsockaddr_un{
lxj1137800599
·
2016-04-26 11:00
UNPv1
第十三章:高级IO
1.套接字超时涉及套接字上的I/O操作设置超时的方法有三种方法:调用alarm,在到达指定时间时产生SIGALRM信号使用select阻塞在等待I/O上,select内部有一个时间限制,以此代替在read或write调用上阻塞使用新的SO_RCVTIMEO和SO_SNDTIMEO套接字选项前两种技术可以用于任何描述字,而第三种只能用于套接口描述字。2.recv和send函数这两个函数和标准的rea
lxj1137800599
·
2016-04-26 11:00
UNPv1
第十二章:守护进程
守护进程(daemon)是在后台运行不受终端控制的进程。Unix系统中一般有很多守护进程在后台运行(20到50个),执行不同的管理任务1.syslog函数既然守护进程没有控制终端,它们就不能把消息fprintf到stderr上,从守护进程中登记消息的常用技巧就是调用syslog函数#include voidsyslog(intpriority,constchar*message,...);prio
lxj1137800599
·
2016-04-26 10:00
UNPv1
第十一章:高级名字与地址转换
1.getaddrinfogetaddrinfo函数能够处理名字到地址以及服务到端口这两种转换,返回的是一个sockaddr结构而不是一个地址列表,这些sockaddr结构随后可由套接字函数直接使用#include intgetaddrinfo(constchar*hostname,constchar*service,conststructaddrinfo*hints,structaddrinfo
lxj1137800599
·
2016-04-26 10:00
UNPv1
第九章:基本名字与地址转换
1.gethostbyname查找主机名最基本的函数是gethostbyname,如果成功,它返回一个指向结构hostent的指针,该结构中包含了该主机的所有IPv4或IPv6地址#include structhostent*gethostbyname(constchar*hostname);hostent结构如下:structhostent{ char*h_name;//officialname
lxj1137800599
·
2016-04-26 10:00
UNPv1
第八章:基本UDP套接口编程
使用UDP编写的一些常用应用程序有:DNS(域名系统)、NFS(网络文件系统)和SNMP(简单网络管理协议)1.典型的UDP客户/服务器程序的函数调用:2.recvfrom和sendto函数两个函数类似于标准的read和write函数,不过需要三个额外的参数#include ssize_trecvfrom(intsockfd,void*buff,size_tnbytes,intflags,stru
lxj1137800599
·
2016-04-26 10:00
UNPv1
第七章:套接口选项
1getsockopt和setsockopt函数这两个函数仅用于套接字:#include intgetsockopt(intsockfd,intlevel,intoptname,void*optval,socklen_t*optlen); intsetsockopt(intsockfd,intlevel,intoptname,constvoid*optvalsocklen_toptlen); //
lxj1137800599
·
2016-04-26 10:00
UNPv1
第六章:IO复用select&poll
有些进程需要一种预先告知内核的能力,使得内核一旦发现进程指定的一个或多个I/O条件就绪(也就是说输入已准备好被读取,或者描述符已能承受更多的输出),他就通知进程,这个能力称为I/O复用1.IO模型5种基本I/O模型阻塞式I/O 非阻塞式I/O I/O复用(select和poll) 信号驱动式I/O(SIGIO) 异步I/O一个输入操作通常包括两个不同的阶段(1)等待数据准备(2)从内核向进程复制数
lxj1137800599
·
2016-04-26 09:00
UNPv1
第五章:TCP客户服务器程序实例
现在写一个完整的TCP客户-服务器程序例子这个简单的例子是完成下述功能的一个回射服务器:1.客户从标准输入读一行文本,写到服务器上2.服务器读入此行,并回射给客户3.客户读此回射行写到标准输出客户端代码:#include #include #include #include #include #include #defineSRV_PORT8888 #defineMAXLINE4096 voids
lxj1137800599
·
2016-04-26 09:00
UNPv1
第四章:基本TCP套接口编程
1socket函数为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型#include intsocket(intfamily,inttype,intprotocol); //返回:若成功则为非负描述符,若出错则为-1其中family指明协议族,type参数指明套接字类型,protocol参数应该设为某个(见下图)协议类型常值,或者设为0,以选择所给定fam
lxj1137800599
·
2016-04-26 09:00
UNPv1
第三章:套接字编程简介
1.套接字地址结构1).IPv4套接字地址结构IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在structin_addr{ in_addr_ts_addr;//32位的IPv4网络字节序 } structsockaddr_in{ uint8_tsin_len;//带符号8位整数地址结构长度, //后来添加的,一般不用 sa_family_tsin_fa
lxj1137800599
·
2016-04-25 19:00
UNPv1
第二章:传输层
本章的焦点是传输层,包括TCP和UDP。绝大多数客户/服务器网络应用使用TCP或UDP。UDP是一个简单的、不可靠的数据报协议。而TCP是一个复杂、可靠的字节流协议。1UDP用户数据报协议UDP是一个简单的传输层协议。应用程序往UDP套接字写入一个消息,该消息随后被封装成IPv4或者IPv6数据报。UDP不保证数据报会达到最终目的地,不保证各个数据报的先后顺序跨网路后保持不变,也不保证每个数据报只
lxj1137800599
·
2016-04-25 17:00
再读
UNPv1
:复习、实践、小结
前言:这算是第二次系统地阅读
UNPv1
,正如副标题,不希望写成书摘、缩写版,尽量多写写个人体会和获得的经验,因此很多地方都会从全书的角度来说明,而不仅仅限于某个章节内部。
·
2015-12-09 10:41
pv
再读Socket编程——《UNIX网络编程(卷一)》学习点滴
借着阅读《UNIX网络编程(卷一)》(简称
UNPv1
)的机会,正好复习一番,而且希望将新的感受记录下来。一些技术细节翻阅原书即可,点到为止,不在这篇博文详述。
·
2015-12-09 10:40
socket编程
UNPv1
笔记9 -- 非阻塞IO - 我爱美女的日志 - 网易博客
UNPv1
笔记9 -- 非阻塞IO - 我爱美女的日志 - 网易博客 Assert 实现 (zz) 忘记该忘记的 -- 任重道远
UNPv1
·
2015-11-13 17:00
非阻塞
Notes on
UNPv1
Ch.5
#1 一般的私有服务器绑定端口时应该应该使用5001~49151区间内的端口. 0~1023为熟知端口, 1024~5000为传统BSD程序使用的临时端口, 49141~65535为一般系统分配时使用的临时端口. (Page.122) #2 子进程在结束时会向父进程发送信号SIGCHLD, 父进程应使用wait*等函数来获取子进程的终止状态信息, 否则子进程会变成僵尸(APUE有介绍.
·
2015-11-13 05:24
Note
Notes on
UNPv1
Ch.7
对于getsockopt和setsockopt, 它们的第一个参数sockfd必须是一个打开的socket描述符. (Page.192) socket的选项分为两种基本类型: 一种是标记型(只有启用和禁用), 一种是数值型(指定选项的参数). (Page.192) 某些系统可能会定义一些socket选项, 但却没有实现这些选项, 如果使用这些选项会触发ENOPROTOOPT
·
2015-11-13 03:57
Note
Notes on
UNPv1
ch.6
Unix下有5种I/O模型: 阻塞型I/O, 非阻塞型I/O, I/O多路复用, 信号驱动I/O, 异步I/O. (Page.154) 阻塞型I/O是最普遍的I/O模型, 并且是socket的默认模式. 此模式下I/O会阻塞至数据准备完毕并切拷贝到进程内存才会返回. (Page.154) 非阻塞型I/O就是在一次I/O操作时, 如果进程不休眠等待, 就无法完成本次操作(即当
·
2015-11-13 03:56
Note
Notes on
UNPv1
Ch.5
#1 一般的私有服务器绑定端口时应该应该使用5001~49151区间内的端口. 0~1023为熟知端口, 1024~5000为传统BSD程序使用的临时端口, 49141~65535为一般系统分配时使用的临时端口. (Page.122) #2 子进程在结束时会向父进程发送信号SIGCHLD, 父进程应使用wait*等函数来获取子进程的终止状态信息, 否则子进程会变成僵尸(APUE有介绍.
·
2015-11-13 03:55
Note
Notes on
UNPv1
Ch.8
使用udp的一些比较有名的应用: DNS, NFS, SNMP. (Page.239) recvfrom和accept函数的相似之处: 最后两个参数用来获取数据的来源; sendto和connect的相似之处: 最后两个参数都用来指定数据的目的地. (Page.241) recvfrom函数中的数据长度的值理所当然地不包含数据包的头部长度. (Page.241) 在udp里, 发
·
2015-11-13 01:23
Note
Socket网络编程--聊天程序(1)
很早的一段时间,看了APUE和
UNPv1
了解了网络编程,但是但是只是看而已,没有具体的实践,趁现在没有什么事做,就来实践了解一下网络编程。写博客保存下来,方便以后用到的时候可以查到。
·
2015-11-07 14:31
socket
unpV1
的源码的使用方法
正准备把
unpV1
再看一遍,但是居然把unp的编译方法给忘记了。查了查资料,才弄好。这就是以前没有养成做笔记的习惯所带来的后果了,浪费了20分钟时间。
·
2015-10-31 11:32
源码
select/epoll
UNPv1
给出了定义。I/O复用是一种让进程预先“警告”内核能力,使得内核一旦发现进程预先告知时指定的一个或多个I/O条
SYP35
·
2015-10-09 08:00
selectepoll
SO_REUSEADDR
(摘自《Unix网络编程》卷一,即
UNPv1
)1、当有一个有相同本地地址和端口的socket1处于TIME_WAIT状态时,而你启动的程序的socket2要占用该地址和端口,你的程序就要用到该选项。
najiutan
·
2015-07-28 11:00
apue学习第二十四天——高级I/O、生产者消费者问题、socket(提纲)
ok,其实剩下这三部分也写不完了,下面列一个提纲,以后再补:1.高级I/O主要讲述非阻塞I/O,记录锁,I/Omultiplexing(多路转接)和异步I/O,memorymap;
UNPv1
中提到了5种
BlitzSkies
·
2015-02-13 10:00
Notes on
UNPv1
ch.6
http://www.cnblogs.com/cenhao/archive/2011/09/08.htmlUnix下有5种I/O模型: 阻塞型I/O, 非阻塞型I/O,I/O多路复用, 信号驱动I/O, 异步I/O.(Page.154)阻塞型I/O是最普遍的I/O模型, 并且是socket的默认模式. 此模式下I/O会阻塞至数据准备完毕并切拷贝到进程内存才会返回.(Page.154)非阻塞型I/O
ywh147
·
2013-06-25 14:00
再读
UNPv1
:复习、实践、小结
前言:这算是第二次系统地阅读
UNPv1
,正如副标题,不希望写成书摘、缩写版,尽量多写写个人体会和获得的经验,因此很多地方都会从全书的角度来说明,而不仅仅限于某个章节内部。
wuyuegb2312
·
2013-05-22 21:00
再读Socket编程——《UNIX网络编程(卷一)》学习点滴
借着阅读《UNIX网络编程(卷一)》(简称
UNPv1
)的机会,正好复习一番,而且希望将新的感受记录下来。一些技术细节翻阅原书即可,点到为止,不在这篇博文详述。
wuyuegb2312
·
2013-05-22 21:00
unpV1
的源码的使用方法
正准备把
unpV1
再看一遍,但是居然把unp的编译方法给忘记了。查了查资料,才弄好。这就是以前没有养成做笔记的习惯所带来的后果了,浪费了20分钟时间。
dyllove98
·
2013-05-10 20:00
linux下posix共享内存区shm_open error,以及信号量sem_open error
刚接触linux系统,买了本
UNPv1
来看看,在看posix共享内存区的时候,拿书带的源代码总是执行出问题,作者把对象创建在了/tmp下,但是我用的是ubuntu10.04,linux系统下共享内存对象是创建在
卜星星
·
2013-04-05 17:00
posix共享内存区linux
socket编程:SO_REUSEADDR
(摘自《Unix网络编程》卷一,即
UNPv1
) 1、当有一个有相同本地地址和端口的socket1处于TIME_WAIT状态时,而你启动的程序的socket2要占用该地址和端口,你的程序就要用到该选项
aries5555
·
2012-07-28 20:00
编程
Stream
socket
tcp
测试
null
非阻IO与EWOULDBLOCK EAGAIN
UNPv1
给出了一个非阻塞socket+select的例子。有人对此提出疑问:假如
Ethan_Novice
·
2012-01-12 16:00
IO
socket
server
null
buffer
Pointers
Linux——原始套接字
本文只是,对
UNPv1
前几节的转载!!!并非原创!!!!!要想真的学会rawsocket把UNPv128章的3个程序从头到尾好好看看一下!!最好的参考资料:1.师从互联网。
firo_baidu
·
2011-01-18 16:00
linux
struct
socket
filter
internet
compression
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他