socket

python使用requests库解析IPv6地址

无人久伴 提交于 2020-01-20 03:28:59
python使用requests库解析IPv6地址 请求一个网页时,如果需要DNS解析IPv6地址,requests好像并不支持切换IPv6,通过分析requests源码,requests使用了urllib3来处理连接: urllib3.connection.HTTPConnection def _new_conn(self): """ Establish a socket connection and set nodelay settings on it. :return: New socket connection. """ extra_kw = {} if self.source_address: extra_kw['source_address'] = self.source_address if self.socket_options: extra_kw['socket_options'] = self.socket_options try: conn = connection.create_connection( (self._dns_host, self.port), self.timeout, **extra_kw) except SocketTimeout as e: raise ConnectTimeoutError( self, "Connection to

Java基础 - 网络编程

ぃ、小莉子 提交于 2020-01-20 00:23:56
网络编程 软件结构:两种 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件 B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等 网络通信协议: 网络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就 好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式、传输速率、传输步骤等做了 统一规定,通信双方必须同时遵守,最终完成数据交换 TCP/IP协议: 传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是 Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它 的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫它的下一层所提供的协议来完成自己的需求 协议的分类: java.net 包中包含的类和接口,它们提供低层次的通信细节我们可以直接使用这些类和接口,来专注于网络程序开发,而不用考虑通信的细节 TCP:传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议,即传输数据之前, 在发送端和接收端建立逻辑连接,然后再传输数据

深入理解通讯协议学习

江枫思渺然 提交于 2020-01-19 23:02:19
目录: 知识架构: 网络模型: Tcp/IP系列协议 tcp的3次握手协议 Tcp的三次握手的漏洞: Tcp的4次挥手协议 抓包工具: 三次握手: TCP的通讯原理: http协议: http协议的报文组成 UDP协议: Tcp通讯代码实战: package io.renren.modules.tcp; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class IcpServer { public static void main(String[] args ) { //创建一个serverSocker监听一个端口:8888 try { ServerSocket serverSocket = new ServerSocket(8888); System. out .println( "Tcp服务器已经启动,端口8888" ); //无限循环 while ( true ) { //等待客户端的请求

socket 网络编程

放肆的年华 提交于 2020-01-19 19:13:10
通过使用套接字来达到进程间通信目的的编程就是网络编程 编程语言 包括 静态代码 html,javascript,css等 包括 动态代码 用于数据库操作 有 php,jsp,asp 包括 服务器架设也是结合你学的动态语言的 mybatis 动态sql语法 网络模型 基础建设 OSI参考模型:七层 Internet网络模型:四层 网络协议 Internet的网络层协议 ip dns Internet的传输层协议 tcp udp 套接字(Sockets) java Sockets tcp Sockets udp Sockets 数据包 在C++编程中,往往定义一种新的数据类型用来存储数据包的结构 数据包传送,指数据包的电气物理传输 解包,指接收端对接收的数据进行解析,获得有用信息和数据 来源: CSDN 作者: 金银忍冬 链接: https://blog.csdn.net/qq_32265719/article/details/104042697

Linux c++ socket编程 客户端 服务器

随声附和 提交于 2020-01-19 19:02:05
服务器 #include <iostream> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #define MAXLINE 4096 #define SERVER_PORT 1234 using namespace std; int main() { int listenfd,connfd; struct sockaddr_in seraddr; struct sockaddr_in cliaddr; char buff[MAXLINE] = {}; int len; if (-1 == (listenfd = socket(PF_INET,SOCK_STREAM,0))) { cout<<"create socket failed!"<<endl; return 0; } else { cout<<"create socket success!"<<endl; } memset(&seraddr,0,sizeof(seraddr)); seraddr.sin_family = AF_INET; seraddr.sin_addr.s_addr = htonl

Nodejs之dgram

放肆的年华 提交于 2020-01-19 18:51:58
dgram dgram数据报提供了UDP数据包socket的实现。 const dgram = require('dgram'); 创建dgram.Sockrt的新实例,不使用new const server = dgram.createSocket('udp4'); error发生错误时触发 server.on('error', (err) => { console.log(`服务器异常:\n${err.stack}`); 关闭一个socket之后触发,一旦触发,则这个socket上将不会触发新的message事件。 server.close(); }); 当有新的数据包被socket接收时,message事件会被触发 server.on('message', (msg, rinfo) => { console.log(`服务器接收到来自 ${rinfo.address}:${rinfo.port} 的 ${msg}`); }); 开始监听数据包信息时触发 server.on('listening', () => { const address = server.address(); console.log(`服务器监听 ${address.address}:${address.port}`); }); server.bind(41234); // 服务器监听 0.0.0.0

Redis面试题总结

不羁岁月 提交于 2020-01-19 15:12:42
如何用Redis做异步队列 一般使用list结构作为队列,rpush生产消息,lpop消费消息,当lpop没有消息的时候,需要适当sleep一会再重试 或者不用sleep使用blpop在没有消息的时候,它会阻塞住直到消息的到来 可以使用pub/sub主题订阅者模式,可以实现1:N的消息队列 pub/sub缺点:在消费者下线的情况下,生产的消息会丢失,要使用专业的消息队列(RocketMQ) Redis如何实现延时队列 使用sortedset,拿时间戳作为score,消息内容作为key调用zadd来生产消息,消费者用zrangebyscore指令获取N秒之前的数据轮询进行处理 机器突然掉电会怎么样 取决于AOF日志sync属性的配置,如果不要求性能,在每条指令时都sync一下磁盘,就不会丢失数据。但在高性能的要求下一般都是使用定时sync。 Pipeline有什么好处,为什么要使用Pipeline 可以将多次IO往返的时间缩减为一次,前提是pipeline执行的指令之间没有因果相关性。使用redis-benchmark进行压测的时候可以发现影响redis的QPS峰值的一个重要因素是pipeline批次指令的数目。 多个操作系统同时操作Redis带来的数据问题 可以基于Zookeeper实现分布式锁,每个系统通过Zookeeper获取分布式锁,确保同一时间

linux 内核与用户空间通信之netlink使用方法

戏子无情 提交于 2020-01-19 13:50:05
转自:http://blog.csdn.net/haomcu/article/details/7371835 Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V IPC,后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的Posix IPC标准,在三者的基础之上实现了以下几种主要的IPC机制:管道(Pipe)及命名管道(Named Pipe),信号(Signal),消息队列(Message queue),共享内存(Shared Memory),信号量(Semaphore),套接字(Socket)。通过这些IPC机制,用户空间进程之间可以完成互相通信。为了完成 内核空间 与 用户空间 通信,Linux提供了基于socket的Netlink通信机制,可以实现内核与用户空间数据的及时交换。 本文第2节概述相关研究工作,第3节与其他IPC机制对比,详细介绍Netlink机制及其关键技术,第4节使用KGDB+GDB组合调试,通过一个示例程序演示Netlink通信过程。第5节做总结并指出Netlink通信机制的不足之处。 2 相关研究 到目前Linux提供了9种机制完成内核与用户空间的数据交换,分别是内核启动参数

linux 内核与用户空间通信之netlink使用方法

邮差的信 提交于 2020-01-19 13:49:19
1 引言 Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V IPC,后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的Posix IPC标准,在三者的基础之上实现了以下几种主要的IPC机制:管道(Pipe)及命名管道(Named Pipe),信号(Signal),消息队列(Message queue),共享内存(Shared Memory),信号量(Semaphore),套接字(Socket)。通过这些IPC机制,用户空间进程之间可以完成互相通信。为了完成内核空间与用户空间通信,Linux提供了基于socket的Netlink通信机制,可以实现内核与用户空间数据的及时交换。 本文第2节概述相关研究工作,第3节与其他IPC机制对比,详细介绍Netlink机制及其关键技术,第4节使用KGDB+GDB组合调试,通过一个示例程序演示Netlink通信过程。第5节做总结并指出Netlink通信机制的不足之处。 2 相关研究 到目前Linux提供了9种机制完成内核与用户空间的数据交换,分别是内核启动参数、模块参数与 sysfs、sysctl、系统调用、netlink、procfs、seq_file

day34-2 多路复用之epoll

。_饼干妹妹 提交于 2020-01-19 07:54:28
epoll select存在的问题 select,需要遍历socket列表,频繁的对等待队列进行添加移除操作 数据到达后还需要遍历所有的socket才能获知哪些socket有数据 两个操作消耗的时间随着要监控的socket的数量增加而大大增加,所以最大只能监视1024个socket。 于是就推出了epoll,epoll对问题一方案是把等待队列的维护与阻塞进程这两个操作分开了 对问题2是自己维护了一个等待队列,避免了遍历所有的socket。需要注意:epoll仅能在linux中使用 epoll相关函数 import select # 导入select模块 epoll = select.epoll() # 创建一个epoll对象 epoll.register(文件句柄,事件类型) # 注册要监视的文件句柄和事件 # 事件类型: select.EPOLLIN # 可读事件 select.EPOLLOUT # 可写事件 select.EPOLLERR # 错误事件 select.EPOLLHUP # 客户端断开事件 epoll.unregister(文件句柄) # 销毁文件句柄 epoll.poll(timeout) # 当文件句柄发生变化,则会以列表的形式主动报告给用户进程,timeout为超时时间,默认为-1,即一直等待直到文件句柄发生变化,如果指定为1