![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
文章平均质量分 70
ASAP_Diablo
这个作者很懒,什么都没留下…
展开
-
POSIX信号处理
POSIX信号处理信号(signal)就是告知某个进程发生了某个事件的通知,有时也称软件中断(software interrupt)。注意:信号是异步发生的,也就是说进程预先并不知道信号的准确发生时刻。信号可以 1. 由一个进程发送给另外一个进程(包括自身) 2. 由内核发送给某个进程信号处理函数每个信号都有一个与之关联的处置。当有特定信号发生的时候,特定的函数被调用,那么这个特定函数就称为原创 2017-07-20 16:11:57 · 1212 阅读 · 0 评论 -
UNP I/O复用模型-EPOLL函数
I/O复用在UNP第五章中介绍了回射服务器(多进程服务器版)的一种特殊情况:在TCP客户同时处理两个输入文件,标准输入stdin和TCP套接字TCP时,可能会由于阻塞发生错误。例如,当客户阻塞于标准输入的fgets调用期间,服务器子进程可能会被杀死(通过lsof -i:端口号查看服务器子进程pid,然后kill pid杀死进程)。在这种情况下,服务器子进程被kill之后虽然可以正确地给客户TCP发送原创 2017-07-27 09:58:20 · 920 阅读 · 0 评论 -
UNP TCP连接管理
ARQ和重传通信媒介可能会丢失或改变被传递的消息,比如一个有损信道内传输比特流,可能会导致比特被删除或者修改,造成通信的不可靠性。目前有两种方式可以解决上述问题:差错校正码:通过添加一些冗余的比特,使得即使某些比特被毁,真实的信息也可以被恢复过来。ARQ(自动重传请求):通过重新传输消息,直到信息最终被正确接收。 ARQ需要重发分组直到它被正确接受,判断机制为:(1)接受方是否已收到分组(2)原创 2017-07-28 12:01:35 · 550 阅读 · 0 评论 -
Centos下配置vim自动补全
https://github.com/ma6174/vim 打开终端,执行下面的命令就自动安装好了: wget -qO- https://raw.github.com/ma6174/vim/master/setup.sh | sh -x我第一次安装时,在vim里面有个显示安装进程的,安装成功一项在左边栏上对应每一行要显示+号,但是第一次有两项没能安装成功。于是我重新执行了自动安装的命令,然后就安原创 2017-07-26 21:54:35 · 1407 阅读 · 0 评论 -
Xcode下配置UNIX网络编程(UNP)环境
由于自己配置unp相关头文件时遇到了很多问题,因此记录下Xcode配置unp开发环境的小技巧。apue开发环境也是类似的。首先在Xcode下创建一个项目,选择Command Line Tool,点击next,填写Product Name和Organization Identifier(随意),选择Language为C。至此项目完毕。 ——》 从http://www.unpbook.com/s原创 2017-07-19 14:40:39 · 1147 阅读 · 0 评论 -
UNP第二十六章 线程
概述当一个进程需要另一个实体来完成某事时,它就fork一个子进程并让子进程去执行处理。之前的多进程服务器:父进程accept一个连接,fork一个子进程,该子进程处理与该连接对端的客户之间的通信。但是fork调用却存在以下两个问题:fork是昂贵的。fork要把父进程的内存映像复制到子进程,并在子进程中复制所有描述符。当今的实现使用称为写时复制的技术,用以避免在子进程切实需要自己的副本之前把父进程原创 2017-07-25 16:18:22 · 313 阅读 · 0 评论 -
UNP 基于Epoll复用的回射服务器性能测试
回射服务器负载测试负载发生器设计思路(1)在客户端程序设计时,利用循环不断地向服务器发起Connect请求,服务器端通过Accept监听客户端连接请求。连接成功后,利用fcntl函数置已连接套接字为非阻塞模式。 代码:for (i = 0; i < COUNT; i++) { if(connect(sockfd[i], (SA*) &servaddr, sizeof(servadd原创 2017-08-08 17:34:09 · 785 阅读 · 0 评论 -
Linux线程池实现--基于Select复用的回射服务器
多线程技术多线程技术主要解决处理器单元内多个线程执行的问题,它可以使处理器尽量保持忙碌状态。在C/S模式的服务器–客户端通信中应用多线程技术,即是服务器在Accept调用等待客户端连接成功时,为每一个客户端连接创建一个线程来处理客户请求。在这种情况下,每次客户连接时,服务器都会进行线程创建、任务分配;客户请求完成后,服务器还需要销毁线程,这一系列的工作需要消耗很多时间,尤其是在大量用户并发时此矛盾尤原创 2017-08-01 09:09:13 · 883 阅读 · 0 评论 -
UNP第十六章 非阻塞式I/O
概述套接字的默认状态是阻塞的,可能被阻塞的套接字调用分为以下四类:输入操作:包括read、readv、recv、recvfrom和recvmsg共5个函数。(1)如果某个进程对一个阻塞的TCP套接字调用这些输入函数之一,而且该套接字的接受缓冲区中没有数据可读,该进程将被投入睡眠,直到有一些数据到达。(2)对于非阻塞的套接字,如果输入操作不能被满足,相应调用将立即返回一个EWOULDBLOCK错误。原创 2017-07-25 09:20:29 · 458 阅读 · 0 评论 -
UNP第六章 I/O复用:select和poll函数
# 概述 当TCP客户同时处理两个输入:标准输入和TCP套接字时,问题就在客户阻塞于(标准输入stdin)fgets调用期间,若将对应的服务器子进程杀死,则用户输入完毕并发送套接字后,才能收到收到服务器过早终止的提示。换言之,当在命令行执行了kill pid(服务器子进程)时,服务器TCP是会正确地给客户端程序发送一个FIN的,但是由于客户端程序现在正阻塞与标准输入读入的过程,它将看不到这个原创 2017-07-21 10:50:38 · 491 阅读 · 0 评论 -
UNP第二章 TCP、UDP和SCTP
概述本章的焦点是传输层,包括TCP、UDP和SCTP。TCP是一个复杂、可靠的字节流协议;UDP是一个简单的、不可靠的数据报协议。用户数据报协议(UDP)–数据包UDP是一个简单的传输层协议,应用进程往UDP套接字写入一个消息,该消息随后被封装到一个UDP数据报,该UDP数据报进而又被封装到一个IP数据报,然后发送到目的地。传输控制协议(TCP)–流TCP提供客户与服务器之间的连接。TCP客户先与某原创 2017-07-18 10:30:53 · 521 阅读 · 0 评论 -
UNP第一章 简介TCP和IP
概述简介Web客户与服务器之间使用传输层的TCP协议通信。TCP转而使用网络层的IP协议通信,IP再通过某种形式的数据链路层通信。 客户和服务器通常是用户进程,而TCP和IP协议通常是内核中协议栈的一部分。 包裹函数:用于检查错误、输出适当的消息,以及在出错时终止程序的运行。一个简单的时间获取客户程序Xcode导入unp.h修改项目Build settings中的Header Se原创 2017-07-17 11:27:53 · 583 阅读 · 0 评论 -
UNP第五章 标准I/O库
流和FILE对象在第三章中,所有I/O函数都是不带缓冲的。术语不带缓冲指的是每个read和write都调用内核中的一个系统调用。而对于标准I/O库,它们的操作是围绕流进行的:当用标准I/O库打开或创建一个文件时,我们已使一个流与一个文件关联。 关于流的概念,个人理解流是对于数据特殊操作,例如在读数据操作时读一点处理一点;在写数据操作里生成一点, 写入一点。 A stream is原创 2017-07-22 14:52:50 · 399 阅读 · 0 评论 -
RFC 959--File Transfer Protocol
引入FTP的目标是 - 促进文件的共享 - 支持对远程计算机的间接使用 - to shield a user from variations in file storage systems among hosts - to transfer data reliably and efficiently文件传输协议FTP采用两个TCP连接来传输一个文件控制连接以通常的客户服务器方式建立原创 2017-09-26 16:31:29 · 424 阅读 · 0 评论