[多进程] [多线程] /************************************************************************* > File summary: 多线程服务器 > Author: > Mail: xls0930@163.com > Created Time: Sun 27 Jan 2019 10:08:19 PM CST ***************************************************…
Linux网络编程(三) wait()还是waitpid() Linux网络编程(二)存在客户端断开连接后,服务器端存在大量僵尸进程.这是由于服务器子进程终止后,发送SIGCHLD信号给父进程,而父进程默认忽略了该信号.为避免僵尸进程的产生,无论我们什么时候创建子进程时,主进程都需要等待子进程返回,以便对子进程进行清理.为此,我们在服务器程序中添加SIGCHLD信号处理函数. 代码如下: #include <stdlib.h> #include <stdio.h> #include…
//网络编程客户端 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h>//htons()函数头文件 #include <ne…
AIO实现非阻塞通信 java7 NIO2 提供了异步Channel支持,这种异步Channel可以提供更高效的IO,这种基于异步Channel的IO被称为异步IO(Asynchronous IO) IO操作分为两步:1.程序发出IO请求  2.完成实际的IO操作 阻塞和非阻塞IO是根据第一步划分的: 发出IO请求如果阻塞线程则是阻塞IO,如果不阻塞线程,则是非阻塞IO. 同步IO和异步IO是根据第二步划分: 如果实际的IO操作是由操作系统完成,再将结果返回给应用程序,这就是异步IO. 如果实际…
1.Socket:英文意思插座.两个Java应用程序可以通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket. 2.Socket通常用来实现client-server(客户端与服务器)连接. 3.java.net包中定义的两个类Socket和ServerSocket,分别用来实现双向连接的client客户端和server服务器端. 4.建立连接时所需的寻址信息为远程计算机的IP地址和端口号. 5.端口号:区分一台机器上不同的应用程序,在计算机内部两个字节(65536个端…
一.何谓C/S架构 C指的是client(客户端软件),S指的是Server(服务端软件),既然我们的的标题是网络编程基础, 那我们就一起来学习怎样写一个C/S架构的软件,实现服务端与客户端软件基于网络的通信. 二.必备计算机基础知识 1.众所周知,我们开发的软件都是应用软件,必须运行在操作系统上,操作系统则运行于硬件之上, 而应用软件是无法直接操作硬件的,而是调用操作系统的接口,由操作系统操纵硬件. 2.客户端和服务端之间信息传递的流程 <1> 客户端产生数据,存放于客户端软件内存中,然后调…
网络通信三要素 IP地址: InetAddress 网络中设备的标识,不易记忆,可用主机名(计算机的标识号) 端口号: 用于标识进程的逻辑地址,不同进程的标识(正在运行的软件的标识号) 传输协议: 通讯的规则 常见协议:TCP,UDP 例子: 平时我们要进行通讯,需要哪些要素呢? 比如说:我要跟你说话. 第一个条件: 我要先找到你 (IP) 第二个条件: 你得有接收数据的地方 耳朵 (端口) 第三个条件: 我跟你说话,你能接收到,咱按什么方式接收啊,我说英文你懂吗,说韩文你懂吗,不懂是吧,所以我…
从Java 1.4开始,Java提供了新的非阻塞IO操作API,用意是替代Java IO和Java Networking相关的API. NIO中有三个核心组件: Buffer缓冲区 Channel通道 Selector选择器 一.Buffer缓冲区 缓冲区本质上是一个可以写入数据的内存块(类似数组),然后可以再次读取.此内存块包含在NIO Buffer对象中,该对象提供了一组方法,可以更轻松地使用内存块. 相比较直接对数组的操作,BufferAPI更容易操作和管理. 使用Buffer进行数据写入…
一.线程,可以发现顺序执行比开线程执行时间要短.原因是,一个进程中的多线程处理,由于存在GIL,并且GIL中只能存在一个线程,加上线程又存在切换的问题,所以时间耗得多.想要解决这个问题,是开几个进程,每个进程一个线程,就可以将cpu的多核利用起来,从而节省时间,不过进程对电脑消耗大,不建议开很多进程,因此可以用其他语言,Python不推荐 def add(): sum=0 for i in range(10000000): sum+=i print("sum",sum) def mul…
准备 我们都知道PHP是单进程执行的,PHP处理多并发主要是依赖服务器或PHP-FPM的多进程及它们进程的复用,但PHP实现多进程也意义重大,尤其是在后台Cli模式下处理大量数据或运行后台DEMON守护进程时,多进程的优势不用多说. PHP的多线程也曾被人提及,但进程内多线程资源共享和分配的问题难以解决.PHP也有多线程想关的扩展 pthreads ,但据说不太稳定,且要求环境为线程安全,所用不多. 以前PHP群里的一位大神曾指导说后台PHP想进阶必然避不开多进程,正好公司里的守护进程也应用了P…