套接字

python --------------网络(socket)编程

杀马特。学长 韩版系。学妹 提交于 2019-12-26 23:37:38
python --------------网络(socket)编程 一、网络协议 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构(互联网中处处是C/S架构):B/S架构也是C/S架构的一种,B/S是浏览器/服务器 C/S架构与socket的关系:我们用socket就是为了完成C/S架构的开发 osi七层 引子: 须知一个完整的计算机系统是由硬件、操作系统、应用软件三者组成,具备了这三个条件,一台计算机系统就可以自己跟自己玩了(打个单机游戏,玩个扫雷啥的) 如果你要跟别人一起玩,那你就需要上网了,什么是互联网? 互联网的核心就是由一堆协议组成,协议就是标准,比如全世界人通信的标准是英语 如果把计算机比作人,互联网协议就是计算机界的英语。所有的计算机都学会了互联网协议,那所有的计算机都就可以按照统一的标准去收发信息从而完成通信了。 人们按照分工不同把互联网协议从逻辑上划分了层级, 详见网络通信原理:http://www.cnblogs.com/linhaifeng/articles/5937962.html 为何学习socket一定要先学习互联网协议?   首先C/S架构是基于网络通信的   然后网络的核心即一堆网络协议,也就是协议标准。如果你想开发一款基于网络通信的软件,就必须遵循这些标准 socke层 二、socket是什么? socket是应用层与TCP

LXC容器运行X Server(续1)

跟風遠走 提交于 2019-12-26 14:44:16
容器要运行X桌面环境可通过ssh,xdmcp远程方式,此时容器是X Client,容器是无需安装X Server. 上篇( https://blog.51cto.com/13752418/2440496 )容器中以本地方式运行X是在宿主的虚拟终端(如vt09)上运行容器X. 本文是续篇,同样容器中以本地方式运行X Server,介绍的内容是容器运行X在宿主的桌面窗口之上,容器以本地方式登录桌面环境,即界面上类似VirtualBox的方式. 实验环境 : debian 11 主机名 shell提示符 ----------------------------------------------- 宿主 : debian root@debian:/# 容器 : vm1 root@vm1:/# 一.简单步骤 1.宿主 1)安装Xephyr root@debian:/# apt-get install xserver-xephyr 2)安装容器工具LXC root@debian:/# apt-get install lxc 3)创建容器 root@debian:/# lxc-create -t debian -n vm1 创建了以debian为模版的容器,其根目录是/var/lib/lxc/vm1/rootfs/ 这一制作容器的根的过程耗费较长时间,如果已有了容器,此步骤可省略. 4

TCP/IP三次握手和HTTP过程

流过昼夜 提交于 2019-12-26 07:28:25
1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主 动关闭连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客 户端交互,最终确定断开) 2、HTTP连接 HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一

python 第七天

落爺英雄遲暮 提交于 2019-12-26 00:43:52
1、socket就是将下边的TCP/IP协议进行封装,留出来的接口用户通信 1.1、Socket Families socket.AF_UNIX unix本机进程间通信 socket.AF_INET IPV4 socket.AF_INET6 IPV6 1.2、Socket Types socket.SOCK_STREAM #for tcp socket.SOCK_DGRAM #for udp 2、Socket 参数 2.1、socket. socket ( family=AF_INET , type=SOCK_STREAM , proto=0 , fileno=None ) 声明socket类型,同时生成socket链接对象 2.2、 s.bind(address) s.bind(address) 将套接字绑定到地址 2.3、 s.listen(backlog) 开始监听传入连接 2.4、 sk.setblocking(bool) 是否阻塞(默认True),如果设置False,那么accept和recv时一旦无数据,则报错。 2.5、 sk.accept() 接受连接并返回(conn,address),其中conn是新的套接字对象,可以用来接收和发送数据。address是连接客户端的地址。 2.6、 sk.connect(address) 连接到address处的套接字。一般

python socket,socketserver,IO多路复用,多线程

只谈情不闲聊 提交于 2019-12-26 00:43:31
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭) socket和file的区别: file模块是针对某个指定文件进行【打开】【读写】【关闭】 socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】 服务端创建 import socket Socket=socket.socket() Socket.bind(('127.0.0.1',9999,)) Socket.listen(5)#最多5个别 while True: ack,con=Socket.accept()#接受客户端的请求,阻塞请求 ack.sendall(bytes('欢迎致电中国电信',encoding='utf8')) while True: ret_bytes=ack.recv(1024) ret_str=str(ret_bytes,encoding='utf-8') if ret_str=='q': break ack.sendall

Socket连接与HTTP连接

六月ゝ 毕业季﹏ 提交于 2019-12-25 19:05:59
我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。 1) Socket是一个针对TCP和UDP编程的接口,你可以借助它建立TCP连接等等。而TCP和UDP协议属于传输层 。 而http是个应用层的协议,它实际上也建立在TCP协议之上。 (HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。) 2) Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口。 下面是一些的重要的概念,特在此做摘抄和总结。 一。什么是 TCP 连接的三次握手 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1)

python网络编程-udp

折月煮酒 提交于 2019-12-24 21:10:00
目录 1. 创建socket 2. udp网络程序-发送数据 3. udp网络程序-接收数据 4. python3中的编码转换 5. udp端口绑定 1. 创建socket 在 Python 中 使用socket 模块的函数 socket 就可以完成(大多数的编程语言的套路是相似的): import socket socket.socket(AddressFamily, Type) 说明: 函数 socket.socket 创建一个 socket,该函数带有两个参数: Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议) 创建一个udp socket(udp套接字): import socket # 创建udp socket udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # ... # 使用套接字收/发数据 # 关闭socket udp_socket.close() 说明: 套接字使用流程 与 文件的使用流程很类似 创建套接字

《TCP/IP Sockets 编程》笔记1

喜你入骨 提交于 2019-12-24 07:05:06
第1章 简介 计算机网络由通过通信信道互连的机器组成。这些机器称为主机(host)和路由器(router)。主机上运行的应用程序是网络的真正“用户”。路由器又称为网关,负责把信息从一条通信信道中继或转发到另一条通信信道,它们可能运行程序,但通常不会运行应用程序。 通信信道(communication channel)是把字节序列从一台主机传送到另一台主机的工具。 路由器并不把每一台主机直接连接到所有其它的主机,而是将少数几台主机连接到一个路由器,再把该路由器连接到其它路由器,从而构成网络。这种安排允许利用数量相对较少的通信信道连接每台机器,大多数主机只需要一条通信信道。通过网络交换信息的程序不会直接与路由器交互,它们基本上感觉不到路由器的存在。 信息:由程序构造和解释的字节序列。 协议:关于通信程序交换的分组机器含义的协定。协议说明如何构造分组,以及如何解释信息。 TCP/IP协议族中唯一的网络层协议是网际协议IP,它解决的问题是使任意两台主机之间的信道和路由器序列看起来像是主机到主机之间的单独一条信道。 IP层上面是传输层,允许两种协议中选择其一:TCP和UDP。每种协议都构建于IP提供的服务上,但采用不同的方式提供不同类型的传输。TCP和UDP具有一个共同的功能:寻址。IP把分组递送到主机,需要进行更细粒度的寻址以便把分组送到特定的应用程序

带你探索网络里的那些秘密

天涯浪子 提交于 2019-12-24 06:14:45
背景 网络,网络... 虽然只是一个简单的名词,但是她的背后却掩藏着太多太多的故事以及知识。 穷其编程的一生,或许也只能探索出那冰山一角,嗨... 小时虽知,学海无涯,却毫不知意。玩乃天性,却空流时光。憾... so,矫情之余,我们来探索一下网络究竟是怎么传输的。 概述 探索网络的范围,都在上图有所展示(另存为看大图)。 正文 一. 生成HTTP请求消息 打开一个网站,都是从浏览器中输入网址开始,我们的探索也是从这里开始。 https: 是协议,告诉浏览器我们要访问的目标,而https: 代表的就是访问Web服务器,当然也有其他的协议。比如ftp:访问的就是FTP服务器等。 sexyphoenix.github.io 是Web服务器域名,可以告诉我们在哪里可以找到Web服务器。 about/ 是Web服务器里面的文件路径名,这里的about是目录名,全路径可能是about/index.md,而index.md应该被github掩藏了。 浏览器首先要做的就是对URL进行解析,知道我们要访问的是sexyphoenix.github.io这个Web服务器上文件路径为about目录下的默认文件。 知道了要访问的目标,接下来浏览器就要生成HTTP的请求信息,介绍到这,就要聊一聊HTTP协议了。 HTTP协议规定了客户端和服务器通信的内容和步骤,简单来说,就是两个部分 “对什么” 做

信息安全系统设计基础第九周学习总结

风流意气都作罢 提交于 2019-12-23 15:50:23
时间统计 预计时间(7小时或者5小时) 课本阅读 2小时 博客编写 3小时 (五笔输入法) 博客编写 1小时 验证代码 2小时 实际时间(8小时) 课本阅读 3小时 博客编写 3小时 (五笔输入法) 已放弃。。。 博客编写 3小时 验证代码 2小时 第十章 系统级I/O 输入/输出是在主存和外部设备之间拷贝数据的过程。输入操作是从I/O设备拷贝数据到主存,输出操作是从主存拷贝数据到I/O设备。 10.1 Unix I/O I/O设备:网络、磁盘和终端 Unix I/O :将设备映射为文件的方式,允许Unix内核引出一个简单、低级的应用接口。 描述符:打开文件时,内核返回一个小的非负整数。 Unix外壳创建的每个进程开始时都有三个打开的文件:标准输入(描述符为0)、标准输出(描述符为1)、标准错误(描述符为2)。 改变当前的文件位置:文件位置为k,初始为0。 seek操作:显式地设置文件的当前位置为k. EOF:是一个条件,而不是一个符号 关闭文件:内核释放文件打开时创建的数据结构,并将这个描述符恢复到可用的描述符池中。无论一个进程因为何种原因终止时,内核都会关闭所有打开的文件并释放它们的存储器资源。 10.2 打开和关闭文件 1、open函数:打开一个已存在的文件或者创建一个新文件 #include <sys/types.h> #include <sys/stat.h>