recv

Python----网络编程----UDP

a 夏天 提交于 2020-02-28 23:48:52
Python学习之路,点击有全套Python笔记 1、什么是socket socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于Socket 来完成通信的 例如我们每天浏览网页、QQ 聊天、收发 email 等等 它是全双工 2、什么是UDP 用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。 创建模板: import socket socket . socket ( AddressFamily , Type ) Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议) 发送示例 import socket def main ( ) : # 创建tcp的套接字 udp_socket = socket . socket (

python学习之网络编程

。_饼干妹妹 提交于 2020-02-25 22:11:18
socket编程 本地进程间通信(IPC) • 队列 • 同步(互斥锁、条件变量等) • 管道 网络进程间通信 问题: 本地通过进程PID来唯一标识一个进程,在网络中如何唯一标识一个进程? 网络层的“IP地址”可以唯一标识网络中的主机,而传输层的“协议+端口” 可以唯一标识主机中的应用程序(进程)。因此利用IP地址,协议,端口就 可以标识网络的进程。 什么是socket? socket(简称套接字) 是进程间通信的一种方式, 能实现不同主机间的进程间通信,我们 网络上各种各样的服务大多都是基于 Socket 来完成通信的。 创建socket 在 Python 中 使用socket 模块的函数 socket 就可以完成: socket.socket(AddressFamily, Type) 1). Address Family: AF_INET: IPV4用于 Internet 进程间通信 AF_INET6: IPV6用于 Internet 进程间通信 2). Type:套接字类型 SOCK_STREAM: 流式套接字,主要用于 TCP 协议 SOCK_DGRAM: 数据报套接字,主要用于 UDP 协 议 01_socket对象的建立 import socket #1. 创建socket对象 #family: AF_INET(IPv4) AF_INET6(IPv6) ========

[C++] epoll server实例

时光毁灭记忆、已成空白 提交于 2020-02-25 19:56:43
// IO多路复用,事件驱动+非阻塞,实现一个线程完成对多个fd的监控和响应,提升CPU利用率 // epoll优点: // 1.select需要每次调用select时拷贝fd,epoll_ctl拷贝一次,epoll_wait就不需要重复拷贝 // 2.不需要像select遍历fd做检查,就绪的会被加入就绪list,遍历list完成处理 // 3.没有最大连接限制,与最大文件数目相关:cat /proc/sys/fs/file-max,与内存相关 // epoll实现相关: // 1.epoll_ctl,将fd的event使用RB tree保存,读写O(logN); // 2.一旦有event,内核负责添加到rdlist链表 // 3.epoll_wait检查链表看是否有事件,并进行处理 // Ref // https://www.cnblogs.com/lojunren/p/3856290.html // http://blog.chinaunix.net/uid-28541347-id-4273856.html // Question: // 是否需要每个event一个实例? #include <cstdlib> /* exit() */ #include <cstdio> /* perror(): 打印信息+发生错误的原因,可用于定位。 */ #include

18.5 TCP的半关闭

穿精又带淫゛_ 提交于 2020-02-24 12:41:53
18.5 TCP的半关闭 TCP提供了连接的一端的结束它的发送后还能接收另一端数据的能力。 这就是所谓的半关闭 print(socket.SHUT_RDWR) print(socket.SHUT_RD) print(socket.SHUT_WR) 2 0 1 0是READ,1是WRITE,2是READ WRITE 如果应用程序不调用c l o s e而调用s h u t d o w n,且第2个参数值为1,则插口的A P I支持 半关闭。然而,大多数的应用程序通过调用close终止两个方向的连接。 node1:/root/test#cat t2.py # coding = utf-8 # -*- coding:utf-8 -*- import socket ip_port = ('192.168.137.2',8080) BUFSIZE = 1000 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建套接字 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(ip_port)#绑定地址 s.listen(5)#监听链接 print('server listening8080...') while True: #无限等待连接 conn,addr = s

Socket 函数

梦想的初衷 提交于 2020-02-24 01:38:15
Socket 小结 函数 注意 accept connect send recv socket() # include <sys/types.h> # include <sys/socket.h> int socket ( int family , int type , int protocal ) ; int family //参数指定所要使用的通信协议 AF_UNIX // Unix 内部协议 AF_INET // Internet 协议 AF_Ns //Xerox NS 协议 AF_IMPLINK //IMP 连接层 int type //指定套接字的类型 SOCK_STREAM //流套字 SOCK_DGRAM //数据报套字 SOCK_RAW //未加工套接字 SOCK_SEQPACKET //顺序包套接字 int protocal //参数常设置为 0 //socket()系统调用返回一个整数值,叫做套接字描述字 sockfd //失败 返回-1 bind() # include <sys/types.h> # include <sys/socket.h> int bind ( int sockfd , struct sockaddr * myaddr , int addrlen ) ; //这个调用将一个名字命名给一个没有名字的套接字 //第二个参数 myaddr

socket套接字编程(一)

拈花ヽ惹草 提交于 2020-02-23 01:40:43
目录 套接字介绍 TCP套接字编程 服务端流程 客户端流程 tcp套接字数据传输特点 网络收发缓冲区 tcp粘包 UDP套接字编程 服务端流程 客户端流程 总结(tcp套接字和udp套接字编程区别) 补充(socket模块方法和socket套接字属性) 套接字介绍 套接字:实现网络编程进行数据传输的一种技术手段 Python实现套接字编程:import socket 套接字分类: 流式套接字(SOCK_STREAM):以字节流方式传输数据(可以理解为像水流一样传输),实现tcp网络传输方案。(面向连接–tcp协议–可靠的–流式套接字) 数据报套接字(SOCK_DGRAM):以数据报形式传输数据(可以理解为像一瓶一瓶的水一样传输),实现udp网络传输方案。(无连接–udp协议–不可靠–数据报套接字) TCP套接字编程 服务端流程 Created with Raphaël 2.2.0 socket bind listen accept send/recv close socket表示创建一个套接字(买了一个电话) bind用于绑定主机ip地址等信息(好比办了一张电话卡) listen设置监听,可以被其他套接字或程序连接的功能(充话费) accept处于等待状态(让电话处于待机状态) send/recv发送/接收(用电话) close销毁套接字(把电话摔了) 创建套接字 sockfd

python摸爬滚打之day26----网络编程之socket

十年热恋 提交于 2020-02-21 12:33:07
1、网络通信原理   互联网的本质就是一系列的网络协议, 统称为互联网协议.    互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。   互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层.   对于tcp\ip 五层协议, 每层运行常见物理设备有以下几种: 2、tcp\ip五层协议模型讲解      我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议就理解了整个互联网通信的原理.     首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解.     每层都运行特定的协议, 越往上越靠近用户,越往下越靠近硬件.   2.1 物理层     孤立的计算机之间要想一起玩,就必须接入internet,言外之意就是计算机之间必须完成组网.     物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0   2.2 数据链路层     单纯的电信号0和1没有任何意义,必须规定电信号多少位一组.     数据链路层的功能:定义了电信号的分组方式.      以太网协议----ethernet        以太网协议规定: 一组电信号组成一个数据包(叫做帧),

网络协议及tcp协议详解

青春壹個敷衍的年華 提交于 2020-02-20 14:35:52
问题来源:面试中面试官会看到你的简历上写着熟悉网络、http、tcp协议等,那你真的了解他吗?今天它来了 一、网络协议: 层次说明: 第七层:应用层( http ) 为操作系统或网络应用程序提供访问网络服务的接口。 第六层:表示层 处理两个通信系统中交换信息的表示方式。为上层用户解决用户信息的语法问题。包括数据格式交换、数据加密与解密、数据压缩与终端类型的转换。 第五层:会话层 在两个节点之间建立端连接。为端系统的应用程序之间提供了对话控制机制。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。 第四层:传输层( tcp ) 为会话层用户提供一个端到端的可靠、透明和优化的数据传输服务机制。 第三层:网络层 网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。 第二层:数据链路层 在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 第一层:物理层 物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以便透明的传送比特流。 二、tcp协议: 说说TCP三次握手的过程? 第一次握手

python- 粘包 struct,socketserver

隐身守侯 提交于 2020-02-19 08:31:33
黏包 黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd) 1 res=subprocess.Popen(cmd.decode('utf-8'), 2 shell=True, 3 stderr=subprocess.PIPE, 4 stdout=subprocess.PIPE) 5 6 的结果的编码是以当前所在的系统为准的,如果是windows,那么res.stdout.read()读出的就是GBK编码的,在接收端需要用GBK解码 7 8 且只能从管道里读一次结果 9 10 注意 注意 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种显现就是黏包。 基于tcp协议实现的黏包 1 #_*_coding:utf-8_*_ 2 from socket import * 3 import subprocess 4 5 ip_port=('127.0.0.1',8888) 6 BUFSIZE=1024 7 8 tcp_socket_server=socket(AF_INET,SOCK_STREAM) 9 tcp_socket_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) 10 tcp_socket_server.bind(ip_port)

ZeroMQ模式

不打扰是莪最后的温柔 提交于 2020-02-17 17:37:28
文章目录 一、相关知识 二、基本套接字 1、REQ-REP模式 2、PUSH-PULL模式 3、PUB-SUB模式 4、DEALER-ROUTER模式 5、PAIR-PAIR模式 结语 一、相关知识 1、基础API接口 创建和销毁套接字:zmq_socket(), zmq_close() 配置和读取套接字选项:zmq_setsockopt(), zmq_getsockopt() 为套接字建立连接:zmq_bind(), zmq_connect() 发送和接收消息:zmq_send(), zmq_recv() 2、ZMQ与TCP的区别 使用多种协议, inproc(进程内) 、 ipc(进程间) 、 tcp 、 pgm(广播) 、 epgm ; 当客户端使用zmq_connect()时连接就已经建立了,并不要求该端点已有某个服务使用zmq_bind()进行了绑定; 连接是异步的,并由一组消息队列做缓冲; 连接会表现出某种消息模式,这是由创建连接的套接字类型决定的; 一个套接字可以有多个输入和输出连接; ZMQ没有提供类似zmq_accept()的函数,因为当套接字绑定至端点时它就自动开始接受连接了; 应用程序无法直接和这些连接打交道,因为它们是被封装在ZMQ底层的。 3、ZMQ核心消息模型 请求-应答模式:将一组服务端和一组客户端相连,用于远程过程调用或任务分发。 发布-订阅模式