首先给出基本所有的信号,方便以后查询. *1 SIGHUP 终止 终止控制终端或进程 2 SIGINT 终止 键盘产生的中断(Ctrl-C) 3 SIGQUIT dump 键盘产生的退出 4 SIGILL dump 非法指令 5 SIGTRAP dump debug中断 6 SIGABRT/SIGIOT dump 异常中止 7 SIGBUS/SIGEMT dump 总线异常/EMT指令 8 SIGFPE dump 浮点运算溢出 9 SIGKILL 终 继续阅读 >>


刘生玺 19/01/01 16:59:51
为什么要用epoll,用了epoll还用不用多线程或者多进程了? 高性能的网络服务器需要同时并发处理大量的客户端,而采用那种对于每个连接使用一个分开的线程或进程的方法效率不高. 因为在处理大量的客户端的时候,资源的使用以及进程上下切换会影响服务器的性能. 那么有一个可代替的方法就是在单一的线程中使用非阻塞的I/O. epoll与多线程与多进程是互不冲突的.使用了epoll并不是说就不能用多线程,可以另开一个线程在分支上工作以节省时间. 那么epoll有哪些相关的函数呢 epoll_createor epoll_create1:用来创建epoll实例 epoll_ctl:用来增加或移除被epoll所监听的文件描述符 epoll_wait:用来等待发生在监听描述符上的事件,它会一直阻塞直到事件发生. 这里要特别强调一个参数EPOLLONESHOT,如果要保证套接字同一时段只被一个线程处理,必须加上。 解决方案:给accept()后的套接字加上参数EPOLLONESHOT,线程结 继续阅读 >>


胡锦雲 18/08/20 08:23:21
Linux网络编程—多路复用之epoll epoll 是多路复用select和poll的加强版,epoll到底强在了哪些地方,我们接下来就会谈到。 我们先简单说一下select和poll的不足之处 select的缺点: 1、单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改数量,但由于select采用轮询的方式扫描文件描述符,文件描述符数量越多,性能越差。 2、 内核 / 用户空间内存拷贝问题,select需要复制大量的句柄数据结构,产生巨大的开销。 3、select返回的是含有整个句柄的数组,应用程序需要遍历整个数组才能发现哪些句柄发生了事件。 4、select的触发方式是水平触发,应用程序如果没有完成对一个已经就绪的文件描述符进行IO操作,那么之后每次select调用还是会将这些文件描述符通知进程。 poll和select的用法非常相似,但是poll是使用链表保存文件描述符,因此没有了监视文件数量地限制,select的前三个缺点依然存在,在高并发下性能还是不够强大。 这 继续阅读 >>


朱文博 18/08/19 23:18:10
最开始的学习疑问,网络编程上的这些乱七八糟的名词这些都是用来干什么的? 地址:为了使网络上的计算机通过唯一标识进行相互间通信 端口:解决多个程序要同时访问网络 IP协议:确定到达目的地的路由 UDP协议:向应用程序提供一种面向无连接的服务 TCP协议:提供一种面向连接的,可靠的数据传输服务 套接字是什么 在两个程序进行通讯连接的一个端点.是连接应用程序和网络驱动程序的桥梁. 网络应用程序通过socket进行数据的发送与接收过程: socket在应用程序中创建,通过绑定与网络驱动建立关系.此后,应用程序送给socket的数据,由socket交给网络驱动程序向网络上发送出去.计算机从网络上收到与该socket绑定IP地址和端口号相关的数据之后,由网络驱动交给socket,应用程序便可以从该socket中提取接收到的数据. 假设第二个程序被加入的网络的Host B中,那么由Host A传来的信息如何能被正确的传给程序B而不是传给新加入的程序呢?这是因为每一个基于TCP/IP网络通讯 继续阅读 >>


胡锦雲 18/08/15 09:17:48
三次握手与四次挥手 通过TCP/IP协议的学习,我们可以知道TCP协议是一种面向连接的、可靠的传输协议。其中,为了保证客户端与服务器连接的有效性,就有了本篇文章所要介绍的“三次挥手”;而“四次挥手”则是为了保证连接的正确断开。 1. TCP状态 首先,介绍一下TCP的几个状态: SYN —— 同步序列编号,在建立连接时发送 ACK —— 确认信息,在确认SYN信息时发送,响应信息 FIN —— 关闭连接 RST —— 连接重置 PSH —— 有数据传输 URG —— 紧急指针字段值有效 2. 三次握手 建立TCP连接时会经过如下步骤: 服务器准备接收客户端连接(通过socket API),由于连接是由客户端激发的,因此称为被动打开 客户端调用connect开始主动打开,并发送SYN(syn = i)包,告诉服务器发送数据的序列号 服务器确认(ACK,ack = i+1)客户端发来的信息(SYN),并发送SYN(syn = j),其中含有服务器发送数据的初始序列号。注:SYN和ACK是同时发送的 继续阅读 >>


王良 18/08/15 08:58:10
网络编程 套接字编程 套接字地址结构: struct sockaddr定义了一种通用的套接字地址 #include<linux/socket.h> struct sockaddr { unsigned short sa_family;//地址类型,AF_xxx char sa_data[14];//14字节的协议地址 }; 参数: sa_family:套接字的协议族类型。对应TCP/IP协议该值为AF_INET。 sa_data:存储具体的协议地址。 说明:一般在编程中并不对该结构体进行操作,而是使用另一个与他等价的数据结构:sockaddr_in sockaddr_in:TCP/IP协议族的地址格式(每种协议族都有自己的协议地址格式): #include<netinet/in.h> struct sockaddr_in { unsigned short sin_family;//地址类型 unsigned short int sin_ 继续阅读 >>


李重乐 18/08/09 17:54:13
看网络编程的时候,开始感觉挺难,函数太多了,慢慢,学的多了,入门了,我把经验分享一下   客户端的我就不讲了,我主要讲讲服务器端的 服务器端 首先调用socket创建一个套接字。 然后通过bind绑定。          socket只是创建了一个套接字,这个套接字将工作在哪个端口上,程序并没有固定。但服务器端的IP地址端口号一般是固定的,因此在服务器端的程序中,使用bind函数将一个套接字和某个端口绑定在一起,该函数一般只有服务器端的程序可以使用。 接着linsten监听。             由函数socket创建的套接字是主动套接字,这种套接字可以用来主动请求连接到某个服务器(通过connect)但作为服务器端的程序,通常在某个端口上监听等待来自客户端的连接请求。       之后调用accept就成功了 (附上服务器端代码) #include <stdio.h> #include <string.h> #include <stdlib. 继续阅读 >>


马艺诚 18/08/05 23:28:45
VMware网络配置方式 桥接模式 桥接模式下虚拟机会使用本机的实际网卡,所以会得到该网段一个实际的IP。此时它相当于一个独立的主机,它可以访问到局域网内的任何物理机机。优点:可以与局域网内的任何主机进行通讯。 由于主机网卡的不一而同,通常桥接模式下有两种连接到网卡的方式 1.无线连接。 2.有线连接。 更改方式在虚拟网络配置里面。 A A1 A2 B之间可以相互通讯 NAT模式 NAT模式下可以实现在虚拟系统里直接通过本机的网络来访问互联网,它的TCP/IP配置是由VMnet8虚拟网络的DHCP服务器提供的,在外部网络和虚拟网络之间,它相当于一个交换机,所以NAT模式下只允许与本机进行通讯,它的优点就是网络配置方式简单,只需要你的物理机可以访问互联网即可,所以个人使用的话,如果怕麻烦,可以选择这种连接方式。使用这种模式,虚拟机可以单向访问到网络上的其他主机,其他主机不能访问该虚拟机 A1 A2 可以访问B B不能访问 A1 A2 A A1 A2 之间可以进行任 继续阅读 >>


陈新 18/07/29 12:38:24
这几天看了看网络最基础的,写个博客留个纪念。。(可能比较枯燥,都是些概念,慢慢耐着头皮看吧,我也是这样过来的) 其实网络的本质就只是为交换数据的!!! 先讲讲网络结构 网络结构分为3层 1.网络边缘:(一般就是家用电脑,手机等等) 2.接入网络(物理介质):(就是说你是通过什么接入网络的,是无线,光纤还是电缆等等) 3.网络核心:(路由器):(通过网络核心来进行数据交换,qq就是这样的,不是说你俩连了同一wifi但是wifi没网就能发消息) 下面讲讲数据交换以及数据交换的3种方式 首先想到的交换肯定是这种交换(如下图),但是这种只试用于小的规模,规模   因为如果网络规模巨大,总连接数为指数增长(n^2链路问题了解一下^-^),所以人们引出了交换设备,故名思意,这个设备用于交换数据 (其实在真实生活中,交换设备可以不是一个两个,而是一个交换机群(俗称isp)) 接着讲讲交换的3种方式 1.电路交换          最常见的就是打电话,这个时候是不是只有你们两个人用一 继续阅读 >>


马艺诚 18/07/28 23:52:05
结构化与非结构化网络 非结构化的P2P网络是指网络节点之间不存在组织关系,节点之间完全是对等的,比如第一代P2P网络Napster。 结构化的P2P网络与非结构化恰好相反,我们认为网络在逻辑上存在一个人为设计的结构,比如Chord假定网络是一个环,Kadelima则假定为一颗二叉树。有了这些逻辑结构,就给我们资源查找引入了更多的算法和思路。 引言 我们在 计算机网络–详解P2P对等网络(一)—BitTorrent协议 这一篇博客中讲述了BT下载的过程:在对等用户拿到种子文件的时候,首先会联系tracker服务器,然后加入用户集群,并在用户集群中寻找自己所需的内容,最后与拥有内容的对等用户进行联系。 从BT下载的过程中引出本节所要讨论的问题:如何高效的从用户集群中找出哪些对等用户拥有你正在寻求的具体内容? 在历史中有三种比较典型的模型来解决这个问题: Napster:使用一个中心服务器接收所有的查询,服务器告知去哪下载其所需要的数据。存在的问题是中心服务器单点失效导致整个网络瘫痪。 继续阅读 >>


董恒毅 18/06/28 21:24:59