![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
unix网络编程
文章平均质量分 79
xiaomiCJH
这个作者很懒,什么都没留下…
展开
-
UDP中recvfrom函数与sendto函数分析
一.UDP客户服务器程序的套接字模型与tcp服务器相比较的优缺点:二、函数解析#include ssize_t recvfrom(int sockfd, void *buf, size_t nbytes, int flags, struct sockaddr *from, socklen_t *addrlen);ssize_t sendto(int soc原创 2017-07-10 18:30:11 · 5069 阅读 · 1 评论 -
send和recv函数分析
#include ssize_t recv(int sockfd, void *buff, size_t nbyte, int flags);ssize_t send(int sockfd, const void *buff, size_t nbyte, int flags); 返回:若成功则返回读或者写的字节数, 若出错则返回-1 flags说转载 2017-07-19 10:39:25 · 694 阅读 · 1 评论 -
基于UDP广播的回射服务器
是原创 2017-08-01 13:20:17 · 445 阅读 · 0 评论 -
基于UDP的C/S多播回射服务器
是原创 2017-08-10 11:48:15 · 560 阅读 · 1 评论 -
TCP带外数据---紧急模式
啊原创 2017-08-11 17:05:43 · 488 阅读 · 0 评论 -
TCP连接异常分析与RST
的原创 2017-08-12 09:56:52 · 681 阅读 · 0 评论 -
非堵塞IO的读与写的回射客户端对比分析
一、非堵塞读与写分析1、老版本1分析--- 基于tcp的堵塞io模型是read和write,结合起来处理的io模型,因为如果服务器没有数据过来,那么read将会一直堵塞下去。因为堵塞将会导致程序的效率不够高效。伪代码如下如实:while(fgets(buf, maxline,stdin) != NULL){ write(sockfd, buf, strlen(buf));原创 2017-07-27 11:43:56 · 441 阅读 · 0 评论 -
fork条件下的套接字io模型分析
7原创 2017-07-27 16:13:25 · 441 阅读 · 0 评论 -
信号驱动IO的UDP回射服务器
一、信号驱动IO的套接字*信号驱动IO进程执行步骤:1)、建立SIGIO的信号处理函数。2)、设置套接字的属主, 通常使用fcntl的F_SETOWN命令设置。3)、开启套接字的信号驱动IO, 通常使用fcntl的F_SETFL命令打开O_ASYNC标志完成。*UDP套接字的SIGIO信号的产生:1)、数据报到达套接字。2)、套接字上发生了异步错误(UDP已经连原创 2017-08-05 18:07:56 · 614 阅读 · 0 评论 -
基于TCP的不同IO版本的时间性能分析
一、关于各种IO的执行情况分析涉及的IO类型:基本堵塞IO版本、select下堵塞IO版本、非堵塞IO版本、fork版本、线程化版本。服务器核心代码:dg_echo.c#include "unp.h"voidstr_echo(int sockfd){ ssize_t n; char buf[MAXLIN原创 2017-07-28 15:25:45 · 341 阅读 · 0 评论 -
TCP之使用带外数据的客户/服务器
一、TCP带外数据* 带外数据, 我们有称之为经加速数据。通常其拥有比普通数据有更好的优先级。然而TCP没有真正的带外数据, 提供了我接下来讲解的紧急模式。如果我们调用send(sockfd, "a",1, MSG_OOB)函数, TCP会吧这个数据放在缓冲区中的下一个可用位置, 并且将紧急指针移动到下一个可用位置。如果下图所示, 并且把带外数据标记为OOP从发送端的原创 2017-08-13 17:39:47 · 347 阅读 · 0 评论 -
TCP四次挥手详解状态装换分析
一、TCP终止过程(四路挥手)1)、某个进程调用close函数,主动关闭。该端发送一个FIN分节,表示数据发送完毕。2)、接受到FIN分节的对端,被动关闭。3)、然后一段时间后。 对端也发送一个FIN分节4)、主动关闭端口,确定对端发送而来的FIN分节。如图所示。类似SYN一样, FIN分节也是占据1个字节的子序列空间。因此, 每个FIN的ACK确认号就是这个FIN的序原创 2017-07-28 19:10:52 · 453 阅读 · 0 评论 -
TCP的流量控制机制与滑动窗口
一、二、三、原创 2017-08-14 17:13:43 · 1843 阅读 · 0 评论 -
套接字超时接接收
一、SIGALRM超时超时接收问题源代码片段:#include "unp.h"/* * recvfrom with a Timeout Using SIGALRM * */void sig_alrm(int signo){ fprintf(stdout,"SIGALRM is OK\n"); return;}void do_cli(FILE *fp,原创 2017-07-19 17:02:17 · 506 阅读 · 0 评论 -
多播套接字选项分析
一、IP_ADD_MEMBERSHIP、IPV6_JOIN_GROUP和MCAST_JOIN_GROUP二、IP_DROP_MEMBERSHIP、IPV6_LEAVE_GROUP和MCAST_LEAVE_GROUP三、IP_BLOCK_SOURCE和MCAST_BLOCK_SOURCE四、IP_UNBLOCK_SOURCE和MCAST_UNBLOCK_SOURC原创 2017-07-31 11:21:57 · 1815 阅读 · 0 评论 -
select函数详解及其在I|O复用模型中的应用
一.select函数详解#include #include int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *excptset, const strcut timeval *timeout)返回:准有就绪的文件描述数量,若超时则返回0,否者返回-1针对select中最后一个时间参数情况如原创 2017-07-08 09:52:43 · 346 阅读 · 0 评论 -
unp-----signal函数与系统中断
一.signal分析系统中断原创 2017-06-11 19:43:22 · 474 阅读 · 0 评论 -
并发服务器中的fork函数、 子进程与父进程的区别
#include int fork(void)返回:在子进程当中为0,在父进程当中表示为子进程ID,若出错则返回-1fork函数的特性:1.fork之前打开的所有的描述符(文件描述符、设备描述符、sockfd、管道中的描述符等等)在fork之后由子进程共享的。2.出了继承打开后的描述符之外,还有其他属性,例如:实际用户ID、实际组ID、有效用户ID、有效组ID附属组原创 2017-06-08 15:55:15 · 2526 阅读 · 0 评论 -
unp----函数connect结合tcp三路握手原理分析
建立一个tcp连接的情景:(1)服务器在接受外来的链接的时候。调用socket,bind, listen这三个函数来完成,我们称之为被动打开(passive open)(2)当我们调用connect发起主动打开(active open)。这样tcp客服端将会发送一个SYN(同步)分节给服务器。该SYN分节不携带任何数据。(3)当服务器接收到了来自客服端的SYN分节,就发送ACK给tcp原创 2017-06-07 19:08:19 · 553 阅读 · 0 评论 -
linux中函数getopt_long用法解释
来源头文件:#include int getopt_long(int agrc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex)optstring:短选项组成的字符串option结构数组,option结构称为长选项表,其声明如下:原创 2017-05-30 16:59:45 · 466 阅读 · 0 评论 -
地址格式和地址查询
为了使不同格式能够传入到套接字函数中,地址将会被转化为一个通用的地址结构sockaddr:struct sockaddr{sa_family_t sa_family;char sa_data[];...};在IPv4因特网俞中(AF_INET)中,套接字地址用结构sockaddr_in表示struct in_addr{in_addr_t s_addr原创 2017-05-28 15:51:53 · 700 阅读 · 0 评论 -
基于UDP的回射服务器研究---未连接UDP漏洞与ICMP错误
UDP回射服务器模型如下图所示 一、服务器程序分析代码片段一:文件:udpserver01.c#include "unp.h"extern void dg_echo(int, struct sockaddr *, socklen_t clien);int main(int argc, char **argv){ int sockfd; sockf原创 2017-07-15 10:30:43 · 483 阅读 · 0 评论 -
readv函数与sendv函数即相关缓冲分析
一、readv与sendv函数和read、write函数类似, readv和writev函数能够允许单个系统调用读入或者写出自一个或多个缓冲区。我们对这些操作称之为“分散读”和“集中写”。#include ssize_t writev(int sockfd, const struct iovec* iov, int iovcnt);ssize_t readn(int sockfd, s原创 2017-07-19 10:40:48 · 976 阅读 · 0 评论 -
套接字和在标准I|O之间的转化
用标准IO代替read和write函数的TCP回射服务器重编tcp服务器端口,代码片段如下:文件:dg_echo_stdio01.c#include "unp.h"void str_echo(int sockfd){ char buf[MAXLINE]; FILE *pread, *pwrite; pread = Fdopen(sockfd, "r");原创 2017-07-20 14:33:57 · 318 阅读 · 0 评论 -
TCP非堵塞IO的connect连接处理模型
一、非堵塞connect版本当在非堵塞TCP套接字上, 我们调用connect函数会立刻返回EINPROGRESS, 不过此时TCP三路握手正在进行, 我们可以通过检查套接字的状态。*非堵塞connect有三个用途1)、我们可以把三路握手叠加到其他的处理上面。 因为在连接过程中花费1个RTT时间,在局域网或者广域网上的时间幅度偏差很大(几毫秒甚至几秒), 那么我们可以利用这些时原创 2017-07-29 14:52:33 · 383 阅读 · 0 评论 -
select函数的单进程和TCP回射服务器应用模型
select tcp回射服务器 先的初始化监听套接字描述符,把fd_set中对应的套接字描述符,设置为1,然后进入监听程序,当有新的cilent连接的时候,select监听的套接字描述符将会变成可读的状态,然后进入可读程序。原创 2017-07-08 15:57:36 · 340 阅读 · 0 评论 -
UDP的流量控制和数据报丢失问题试验分析
接受的数据报的数目不确定性分析:1、网络负载。2、客户机处理负载。增大套接字缓冲区大小通过调用setsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen)原创 2017-07-15 19:13:20 · 1029 阅读 · 0 评论 -
select函数在TCP和UDP回射服务器中的应用
一、UDP与connect函数的关联性二、UDP中多次Sendto与Connect之间的性能分析 的v 三、TCP和UDP回射服务器中的应用原创 2017-07-17 20:02:14 · 774 阅读 · 0 评论