accept

3. 彤哥说netty系列之Java BIO NIO AIO进化史.md

青春壹個敷衍的年華 提交于 2019-11-29 18:43:37
你好,我是彤哥,本篇是netty系列的第三篇。 欢迎来我的公从号 彤哥读源码 系统地学习 源码&架构 的知识。 先说两个事 (1)上周五的那篇文章发重复了,是定时任务设置错误导致,给大家带来干扰,这里说声抱歉。 (2)之前的问卷调查结果出来了,认为先讲案例的票数较多,所以后面的文章都是先讲案例,再以案例展开讲解组件。 简介 上一章我们介绍了IO的五种模型,实际上Java只支持其中的三种,即BIO/NIO/AIO。 本文将介绍Java中这三种IO的进化史,并从使用的角度剖析它们背后的故事。 Java BIO BIO概念解析 BIO,Blocking IO,阻塞IO,它是Java的上古产品,自出生就有的东西(JDK 1.0)。 使用BIO则数据准备和数据从内核空间拷贝到用户空间两个阶段都是阻塞的。 BIO使用案例 public class EchoServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8080); while (true) { System.out.println("start accept"); Socket socket = serverSocket.accept(); System.out

socket中的listen与accept

谁都会走 提交于 2019-11-29 14:18:51
listen:    建立监听,能否建立需要accept函数去进行检查 def listen(self, backlog: int) #backlog指定最多允许多少个客户连接到服务器。它的值至少为1。收到连接请求后,这些请求需要排队,如果队列满,就拒绝请求。 注意: backlog应该理解为阻塞队列的长度,总共与服务器连接的客户端一共有 backlog + 1 个。阻塞队列FIFO,当连接客户端结束后阻塞队列里的第一个客服端与服务器连接成功。 accept: def accept(self): """accept() ->(套接字对象,地址信息) 等待传入连接。返回一个新的套接字 表示连接和客户端的地址。 对于IP套接字,地址信息是一对(hostaddr, port)。 """    accept()接受一个客户端的连接请求,并返回一个新的套接字,不同于server端的socket()返回用于监听和接受客户端的连接请求的套接字;与客户端通信是通过这个新的套接字上发送和接收数据来完成的。每个连接进来的客户端,都会通过accept函数返回一个不同的客户端的socket对象和属于客户端的套接字 测试:假设服务端永久开启,listen设置有允许有1个用户端在等待,同时启动三个用户端:   启动第1个用户端,程序正常运行   启动第2个用户端,程序正常运行

IPTABLES命令

隐身守侯 提交于 2019-11-29 10:35:17
<pre name="code" class="plain">vim /etc/sysconfig/iptables 查看iptables规则 iptables -L -n iptables -L -n --line-numbers 添加规则 iptables -I INPUT -p tcp --dport 3306 -j ACCEPT iptables -I INPUT -p tcp --dport 22 -j ACCEPT iptables -I INPUT -p tcp --dport 8086 -j ACCEPT 删除一条规则 iptables -D INPUT 3 删除INUPT第三条规则 保存规则 /etc/init.d/iptables save 禁止所有进入的包 iptables -P INPUT DROP 允许所有出的包 iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP 允许公网ping iptables -A INPUT -p icmp -j ACCEPT 禁止某个IP访问 iptables -I INPUT -s 222.186.30.161 -j DROP 查看当前nat表的防火墙规则 iptables -t nat -L -n --line-numbers 删除命令 iptables -t nat -D

H5 调用手机摄像机、相册功能

寵の児 提交于 2019-11-29 02:35:51
本文转载于: 猿2048 网站 H5 调用手机摄像机、相册功能 <input type="file" accept="image/*" capture="camera"> <input type="file" accept="video/*" capture="camcorder"> <input type="file" accept="audio/*" capture="microphone"> accept表示打开的系统文件目录; capture表示的是系统所捕获的默认设备,camera:照相机;camcorder:摄像机;microphone:录音; 还有一个属性multiple,支持多选,当支持多选时,multiple优先级高于capture,所以只用写成:<input type="file" accept="image/*" multiple>就可以。 来源: https://my.oschina.net/u/4191619/blog/3100292

就业DAY2_网络编程_tcp客户端及服务器

为君一笑 提交于 2019-11-29 02:25:13
from socket import * import socket def main(): # 创建tcp套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 链接服务器 # tcp_socket.connect(("10.6.25.79", 8080)) server_ip = input("请输入需要链接服务器的IP:") server_port = int(input("请输入需要链接服务器的port:")) server_addr = (server_ip, server_port) tcp_socket.connect(server_addr) # 发送数据 send_data = input("请输入发送的数据:") tcp_socket.send(send_data.encode("gbk")) # 关闭套接字 tcp_socket.close() if __name__ == "__main__": main() from socket import * import socket def main(): # 买个手机-创建tcp套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 插入手机卡-绑定

基于Socket创建Web服务

梦想的初衷 提交于 2019-11-29 00:48:12
基于Socket创建Web服务 为什么要使用Socket 呢, 我们来看下图 Socket原理图回顾: -------------------编写SocketService,完成字母小写转大写功能----------------------------- ServerSocket服务器端代码如下: public static void main(String[] args) throws IOException { // 1:建立服务器端的tcp socket服务,必须监听一个端口 ServerSocket ss = new ServerSocket(9999); // 2: 通过服务器端的socket对象的accept方法获取连接上的客户端对象 Socket s = null; // 3:获取客户端的数据 while (true) { // 接受Socket服务,如果有,没有则堵塞,等待 s = ss.accept(); System.out.println("accept success......."); // 从Socekt输入流中获取客户端发送过来的输出流 InputStream in = s.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); String str = new

Linux常用命令

让人想犯罪 __ 提交于 2019-11-28 22:27:44
  Linux CentOS运维中,常用的操作和命令记录下: 1、DNS设置   在Linux服务器上,当我们ping出现这个错误时:ping: unknown host,很大可能是系统的DNS没有设置或者设置错误。在 /etc/resolv.conf 中,设置下即可: # cat /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 2、FTP客户端配置   当我们需要在Linux服务器上连某个FTP,输入ftp命名提示这个错误时:-bash: ftp: command not found,可能是服务器上没有安装FTP客户端。我们可以到http://mirror.centos.org/centos/5/os/i386/CentOS/ 下,找到ftp的rpm package的安装包地址下载后执行安装: # rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/ftp-0.17-38.el5.i386.rpm 3、防火墙配置   Linux的防火墙相信大家都不会陌生,iptables 功能很强大,我们暂时只列出我们常用的,比如当前系统只开放了SSH的22端口, [root@localhost /]# cat /etc/sysconfig/iptables #

linux防火墙开启端口

◇◆丶佛笑我妖孽 提交于 2019-11-28 11:57:31
1.使用命令查看端口开启情况(下图为安装时未选择开启防火墙) [root@fullstack ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 2.清除防火墙规则(已有规则可以不进行) [root@fullstack ~]# iptables -F #清除预设表filter中的所有规则链的规则 [root@fullstack ~]# iptables -X #清除预设表filter中使用者自定链中的规则 [root@fullstack~]# /etc/rc.d/init.d/iptables save #保存以后下次重启才会开启[root@fullstack ~]# service iptables restart #重启一下防火墙 3.设置防火墙规则 [root@fullstack ~]# iptables -p INPUT DROP [root@fullstack ~]# iptables -p OUTPUT

epoll使用总结

非 Y 不嫁゛ 提交于 2019-11-28 09:02:22
epoll的使用总结 使用epoll来实现一个tcp server,中间碰到了不少使用细节上的问题,总结一下。 man epoll里推荐的使用方法 epoll使用代码 #define MAX_EVENTS 10 struct epoll_event ev, events[MAX_EVENTS]; int listen_sock, conn_sock, nfds, epollfd; /* Set up listening socket, 'listen_sock' (socket(), bind(), listen()) */ epollfd = epoll_create(10); if (epollfd == -1) { perror("epoll_create"); exit(EXIT_FAILURE); } ev.events = EPOLLIN; // 不要写成ev.events = EPOLLIN | EPOLLET; ev.data.fd = listen_sock; if (epoll_ctl(epollfd, EPOLL_CTL_ADD, listen_sock, &ev) == -1) { perror("epoll_ctl: listen_sock"); exit(EXIT_FAILURE); } for (;;) { nfds = epoll_wait

iptables一些练习

孤街醉人 提交于 2019-11-28 08:55:10
iptables 一些小练习 可以参考之前的一起食用 https://www.cnblogs.com/lovesKey/p/10909633.html 允许来自192.168.0.0/16网段的地址来访问我的192.168.1.7的sshd服务(22端口). 定义进来的: iptables -t filter -A INPUT -s 192.168.0.0/16 -d 192.168.1.7 -p tcp --dport 22 -j ACCEPT 定义出去的: iptables -t filter -A OUTPUT -s 192.168.1.7 -d 192.168.0.0/16 -p tcp --dport 22 -j ACCEPT 将默认策略都改成 DROP : iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP 状态检测 这是一种现实扩展(意味着我们要用-m 显示加载模块),用于检测回话之间的连接关系,我们可以实现会话功能的扩展 什么是状态检测? 对于tcp协议来说,它是一个有连接的协议,需要三次握手,第一次握手我们称之为 NEW 连接,而从第二次握手之后,ack都为1,这是正常的数据传输,tcp第二次第三次握手称为 已建立的连接 ESTABLISHED ,如:SYN=1 ACK=1