Python----socket编程

socket

一、socket是什么?

socket 通常也称为“套接字”,用于描述 IP 地址和端口,是一个通讯链的句柄。应用程序通常通过 “套接字”向网络发出请求或者应答网络请求。说白了,就是一种通讯机制。它类似于公司的电话客服部门,你打电话的时候,那边会分配一个人回答你的问题,客服部门就相当于 socket 的服务器端了,打电话的人相当于客户端了,在和你通话结束前,如果有人在想找和你通话的哪个客服人员,是不可能的,因为你在和他通话,当

套接字分类:1、基于文件类型的套接字家族;套接字家族的名字:AF_UNIX
2、基于网络类型的套接字家族;套接字家族的名字:AF_INET
在这里插入图片描述

二、套接字:通信端点

1、套接字
  套接字是计算机网络数据结构,它体现了上节中所描述的“通信端点”的概念。在任何类型的通信开始之前,网络应用程序必须创建套接字。
  有两种类型的套接字:基于文件和面向网络的。
2、套接字地址:主机-端口对
  如果一个套接字像一个电话插孔-允许通信的一些基础设施,那么主机名和端口号就像区号和电话号码的组合。有效的端口号范围为0-65535(小于1024的端口号预留给了系统)
3、面向连接的套接字和与无连接的套接字
  面向连接,在进行通信之前必须建立一个连接。实现这种连接类型主要协议是TCP(传输控制协议)
  无连接,在通信之前并不需要建立连接。主要协议是UDP(用户数据报协议)

三、socket()函数

Python 中,我们用 socket()函数来创建套接字,语法格式如下:

socket.socket([family[, type[, proto]]])

参数
family: 套接字家族可以使AF_UNIX或者AF_INET
type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM
protocol: 一般不填默认为0.

四、Socket 对象(内建)方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、简单实例

服务端
我们使用 socket 模块的 socket 函数来创建一个 socket 对象。socket 对象可以通过调用其他函数来设置一个 socket 服务。
现在我们可以通过调用 bind(hostname, port) 函数来指定服务的 port(端口)。
接着,我们调用 socket 对象的 accept 方法。该方法等待客户端的连接,并返回 connection 对象,表示已连接到客户端。
完整代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:server.pyimport socket               # 导入 socket 模块s = socket.socket()         # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
port = 12345                # 设置端口
s.bind((host, port))        # 绑定端口s.listen(5)                 # 等待客户端连接
while True:c,addr = s.accept()     # 建立客户端连接print '连接地址:', addrc.send('欢迎访问菜鸟教程!')c.close()                # 关闭连接

客户端
接下来我们写一个简单的客户端实例连接到以上创建的服务。端口号为 12345。
socket.connect(hosname, port ) 方法打开一个 TCP 连接到主机为 hostname 端口为 port 的服务商。连接后我们就可以从服务端获取数据,记住,操作完成后需要关闭连接。
完整代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:client.pyimport socket               # 导入 socket 模块s = socket.socket()         # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
port = 12345                # 设置端口号s.connect((host, port))
print s.recv(1024)
s.close()

现在我们打开两个终端,第一个终端执行 server.py 文件:

$ python server.py

第二个终端执行 client.py 文件:

$ python client.py

这时我们再打开第一个终端,就会看到有以下信息输出:

连接地址: ('192.168.0.118', 62461)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样编写测试类测试分支_测试技巧–不编写测试

怎样编写测试类测试分支对此没有太多疑问,测试代码的方式是一个有争议的问题。 不同的测试技术由于各种原因(包括企业文化,经验和总体心理观点)而受到不同开发人员的青睐。 例如,您可能更喜欢编写经典的单元测试&#…

怎么样才算高级java工程师

高级水平: 1.能对需求进行架构设计,选择框架以适应最合适的业务,作为某个项目的领导,带领团队完成项目。 2.有自己的开源项目,可以写出自己的组件,对开源的框架能够进行二次编写,java核心技术有…

Autorize插件的使用方法

在Proxy或者Repeater有Request请求包后,要ctrlA全选,然后再右键发送到Autorize插件中: 如果只是像这样空白的发送是不会发送过去的:

粉丝提问:求问大神您会查exif吗?

无需下载安装任何软件,直接上传图片即可查看EXIF。支持JPEG、TIFF、CR2、NEF、XMP等多种图片格式破解Canon、

linux和windows的分区区别,Linux分区与Windows分区的区别

打开开始-管理工具-计算机管理,如下图所示:在Windows系统中,计算机的分区是用磁盘0,磁盘1,磁盘2,磁盘3来表示多块硬盘的,比如磁盘0表示第一块硬盘,磁盘2表示第二块硬盘,以…

一个用于伪造IP地址进行爆破的BurpSuite插件:BurpFakeIP

BurpFakeIP介绍 一个用于伪造ip地址进行爆破的BurpSuite插件,burpsuite伪造ip可用于突破waf及进行安全规则绕过等场景;昨天我们分享了《BurpSuite IP代理扩展,使用AWS API网关动态更改请求:IPRotate_Burp_Extension》有同学也发现…

学习Spring-Cloud –编写微服务

继续我的Spring-Cloud学习历程, 之前我已经介绍了如何编写典型的基于Spring-Cloud和Netflix OSS的微服务环境的基础架构组件–在此特定实例中,有两个关键组件,用于注册和发现服务的Eureka和Spring Cloud用于维护服务配置集中式配置库的配置。…

linux内核配置usb虚拟串口,Linux USB虚拟串口设备

Linux内核中usb设备侧驱动程序分成3个层次:UDC驱动程序、Gadget API和Gadget驱动程序。UDC驱动程序(USB控制器)直接访问硬件,控制USB设备和主机间的底层通信,向上层提供与硬件相关操作的回调函数。Gadget API是UDC驱动程序回调函数的简单包装…

Chunked coding converter插件的使用方法

burp插件----Chunked coding converter url下载:https://github.com/zxl2605/chunked-coding-converter 安装步骤:BurpSuite -> Extender -> Extensions -> Add -> Extension Type: Python -> Select file: chunked-coding-converter.0.…

linux 提升cpu权限,CPUlimit有效防止Linux系统CPU过载

最近使用Nginx服务器测试 pagespeed 的加速效果时,发现这货会造成 CPU 占用过高,Nginx 经常 100%,尽管使用的是静态缓存,总是触发主机商的CPU占用上限,不停的被强制关机。发现 CPULimit 这款工具刚好可以解决这个问题&…

domain hunter pro插件的使用方法

bilibili教程:https://www.bilibili.com/video/BV1eA411P7xC/ 安装 获取软件的Jar包,由于该软件是基于BurpSuite的插件程序。需要与BurpSuite一起使用。 安装后的界面效果 项目管理 创建一个新的项目,也可以打开已有的项目文件&#xf…

CSS基本语法?

CSS 实例 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明: 选择器通常是您需要改变样式的 HTML 元素。 每条声明由一个属性和一个值组成。 属性(property)是您希望设置的样式属性(style attribute&#x…

BurpSuite插件 -- FastjsonScan(反序列化检测)

你可以因为现任不好二分手,但千万不要认为别人更好,永远有人更好,眼下便是更好。。。 ---- 网易云热评 一、插件介绍: 一个简单的Fastjson反序列化检测burp插件,我在挖洞的时候看到一些json请求总是想要检测一下有没有…

查看linux电脑总内存,如何查看Linux系统中的内存使用情况的命令呢?

有些命令可用于检查Linux系统中的内存使用情况。这是一些更好的命令。有很多工具可以查看Linux系统中的内存使用情况。一些命令被广泛使用,例如free和ps。其他命令允许以多种方式显示系统的性能统计信息,例如top。在本文中,我们将介绍一些命令…

【工具使用】Xray与Burp联动--流量转发插件Passive Scan Client

Burp被动扫描流量转发插件:Passive Scan Client 0x01 插件编译 插件地址:https://github.com/c0ny1/passive-scan-client rootkali:~# git clone https://github.com/c0ny1/passive-scan-client.git rootkali:~# cd passive-scan-client/ rootkali:~/passive-scan…

linux 用mutex定义一个linkedlist,【基于LINUX的操作系统实验教程最终版材料】

(基于LINUX的操作系统实验教程)(最终版)《基于LINUX的操作系统实验教程.doc》由会员分享,可免费在线阅读全文,更多与《(基于LINUX的操作系统实验教程)(最终版)》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、b;*Waitonthe…

服务器硬件监控转载:

转载:http://nolinux.blog.51cto.com/4824967/1664664 前一周上架服务器,本来准备把针对服务器的硬件监控这一部分总结下成文,结果过个端午给过忘了。。。今天就又整理了下,在这里分享给51博友,也算是对自己前段工作的…

验证码识别Burp reCAPTCHA插件使用

介绍 Burp的reCAPTCHA也可用来识别验证码,github地址:https://github.com/bit4woo/reCAPTCHA,下载相应的jar包添加到burp中,位置在extender-extensions-add下,添加成功后burp模块栏会多出reCAPTCHA一栏,如下…

linux下的五种io模型,Linux下的五种IO模型

Java中提供的IO有关的API,在文件处理的时候,其实依赖操作系统层面的IO操作实现的(关于Java对IO的三种封装,可见我的另一篇博客)开门见山,Linux下的如中IO模型:阻塞IO模型,非阻塞IO模型,IO复用模…

如何使用Eclipse调试Maven构建

当运行带有许多插件(例如jOOQ或Flyway插件 )的Maven构建时,您可能想更深入地了解这些插件或这些插件的扩展内部发生了什么。 当您从命令行运行Maven时,这可能并不明显,例如通过: C:\Users\jOOQ\workspace&…