Python3 socket

PYTHON3里面的SOCKET编程 本文主要内容为python3的基于TCP的socket编程。作者使用的python版本为python3.6。   基于TCP的SOCKET编程   1了解TCP   TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。其特点在于:     ①有序性:为数据包编排序号     ②正确性:checksum函数检验数据是否出错     ③可靠性:超时重传、错误重传、丢失 阅读详情

前言

最近又开始学习Python3了,俗话说,3天不摸手生,以前学习的都忘得差不多了,现在又重新捡起来继续学习,虽然都是很基础,很低级的东西,慢慢来吧,什么东西不是一点一点积累起来的呢。

摘要

Python 提供了两个级别访问的网络服务。

  • 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。
  • 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

    现在用低级别的socket写一个例子。

实例

首先编写一个socket服务端守护进程,用于监听某个网络端口接收处理网络请求。然后编写一个socket客户端程序,用于向服务端发起网络请求,并显示从服务端获取的数据。

socket_server.py
#!/usr/bin/python3
# -*- coding: UTF-8 -*-

import sys
import socket

# socket server

## 创建socket对象
serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

## 获取本地主机名
host=socket.gethostname()

## 绑定端口
port=9999
serversocket.bind((host,port))

## 设置最大连接数,超过后排队
serversocket.listen(5)

while True:
    # 建立客户端连接
    clientsocket,addr=serversocket.accept()

    print("连接底座:%s"%str(addr))

    msg="这里是Python Socket 服务端!"
    clientsocket.send(msg.encode("utf-8"))
    clientsocket.close()

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
socket_client.py
#!/usr/bin/python3
# -*- coding: UTF-8 -*-

import sys
import socket

# socket client
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 获取本地主机名
host=socket.gethostname()

# 设置端口号
port=9999

# 连接服务,指定主机和端口
s.connect((host,port))

# 接收小于1024字节的数据
msg=s.recv(1024)

s.close()

print(msg.decode("utf-8"))

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

Socket 对象(内建)方法

服务器端套接字
函数描述
s.bind()绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址。
s.listen()开始TCP监听。backlog指定在拒绝连接之前,操作系统可以挂起的最大连接数量。该值至少为1,大部分应用程序设为5就可以了。
s.accept()被动接受TCP客户端连接,(阻塞式)等待连接的到来
客户端套接字
函数描述
s.connect()主动初始化TCP服务器连接,。一般address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。
s.connect_ex()connect()函数的扩展版本,出错时返回出错码,而不是抛出异常
公共用途的套接字函数
函数描述
s.recv()接收TCP数据,数据以字符串形式返回,bufsize指定要接收的最大数据量。flag提供有关消息的其他信息,通常可以忽略。
s.send()发送TCP数据,将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小。
s.sendall()完整发送TCP数据。将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。
s.recvform()接收UDP数据,与recv()类似,但返回值是(data,address)。其中data是包含接收数据的字符串,address是发送数据的套接字地址。
s.sendto()发送UDP数据,将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。
s.close()关闭套接字
s.getpeername()返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。
s.getsockname()返回套接字自己的地址。通常是一个元组(ipaddr,port)
s.setsockopt(level,optname,value)设置给定套接字选项的值。
s.getsockopt(level,optname[.buflen])返回套接字选项的值。
s.settimeout(timeout)设置套接字操作的超时期,timeout是一个浮点数,单位是秒。值为None表示没有超时期。一般,超时期应该在刚创建套接字时设置,因为它们可能用于连接的操作(如connect())
s.gettimeout()返回当前超时期的值,单位是秒,如果没有设置超时期,则返回None。
s.fileno()返回套接字的文件描述符。
s.setblocking(flag)如果flag为0,则将套接字设为非阻塞模式,否则将套接字设为阻塞模式(默认值)。非阻塞模式下,如果调用recv()没有发现任何数据,或send()调用无法立即发送数据,那么将引起socket.error异常。
s.makefile()创建一个与该套接字相关连的文件
Python3:Socket通信(Socket模块) 主要内容server端实现client端实现socket模块 功能目的:通过socket的方式client发送"指令"获取server端的文件,获取文件结束后关闭client和server端的套接字 server端实现 from socket import * import threading import sys HOST = '' PORT = 12345 BUFSIZ = 1024 ADDR = (HOST, PORT) sub_threads = [] # 创建套接字 server_sock = 阅读详情

相关推荐

Python3协程中socket的使用

Python3协程中socket的使用 TCP server import asyncio class EchoServerProtocol(asyncio.Protocol): def connection_made(self, transport): peername = transport.get_extra_info('peername') ...

sinat_41030415的博客 1103

python socket 常见方法及 简单服务/客户端

python socket 常见方法及 简单服务/客户端 socket 常见方法: 补充说明:what is file descriptor? 文件描述符是什么? 参考(http://stackoverflow.com/questions/8191905/whats-is-difference-between-file-descriptor...

weixin_30254435的博客 631

python3 socket异步通信

server端 #coding:utf-8 #gengzg 2020.04 import select import socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind...

私人博客 1274

python 使用socket客户端向服务端传参,调用指定函数并返回值给客户端

1、socket服务端importsocket ip_port=('192.168.89.101',9999) sk=socket.socket() sk.bind(ip_port) sk.listen(5) defshow(vals): ifvals=="aaaa": return"ilovedengwenqing" ...

weixin_34150503的博客 1206

如何利用ADS中的耦合线设计带通滤波器并转换为HFSS模型

耦合线带通滤波器是一种常用的微带滤波器形式,由多个长度为四分之一波长的耦合线节组成,在所需频点形成谐振,构成滤波器的频率响应特性。首先我们先来了解一下耦合线带通滤波器的电路结构,见下图:包括两对耦合线,中间为公共连接点,其中两对耦合线的偶奇模阻抗为(Z1e,Z1o)和(Z2e,Z2o,端口输入阻抗为Z0)。2.指定一个初始奇偶模值,ADS优化出一个合适的结果,通过奇偶模值利用linecalc工具计算出微带耦合线尺寸。假设中心频率为2GHz,则对应频点的电长度为。5.运行结果,两个软件仿真结果基本一致。

auqihc的博客 2227

手把手教你驱动6脚三位一体数码管:从引脚分析到C语言扫描代码实战

本文详细解析了如何逆向工程并驱动6脚三位一体数码管的全过程,从引脚分析到C语言扫描代码实战。通过系统化的测试和优化,作者总结出一套高效的驱动架构和调试方法,适用于工业设备中的非标准数码管应用。

weixin_42632434的博客 212

Jsoup 使用

tagname: 通过标签查找元素,例如通过"a"来查找标签。#id: 通过ID查找元素,比如通过#logo查找。.class: 通过class名称查找元素,比如通过.titile查找。ns|tag: 通过标签在命名空间查找元素,比如使用fb|name来查找。: 利用属性查找元素,比如通过[href]查找。: 利用属性名前缀来查找元素,比如:可以用[^data-]来查找带有HTML5 dataset属性的元素。。

m0_54407550的博客 613

虚拟机VirtualBox下载与安装、安装Ubuntu超详细图文步骤,对一些配置问题也有所写。

自己使用过两款虚拟机,相较于VMware虚拟机来说,virtuabox虚拟机所占内存更小,只有几十兆,且完全开源不收费,里面的功能与VMware基本差不多(在日常开发、学习使用完全够用)。最主要的是,在博主自己使用VMware时经常出错,而virtualbox就更稳定一些,所以这篇是针对virtualbox的安装与一些细节部分。

l1015649309的博客 4万+

一图了解 socket(以及于文件描述符fileno关系)【汇合几篇网上好文章】

引用连接 PHP简单socket编程 三次握手 四次握手 与socket函数的关系 【PHPsocket编程专题(实战篇①)】php-socket通信演示 五分钟读懂TCP 协议——TCP协议简介 没找到这篇文章的原作者 一图了解 ...

yilegel写一写 1550

爬虫面试:关于爬虫破解验证码的13个经典面试题

​解释:验证码是一种用于区分人类用户和自动化程序(如爬虫)的技术,通常通过显示图形、文字或音频等方式,要求用户完成特定任务(如识别扭曲的字母、点击特定区域等)。​作用:防止恶意爬虫滥用网站资源、进行批量注册、登录破解等行为,保护网站的安全性和数据的完整性。

数据知道的博客 1万+

硅电容的工艺结构原理及选型参数总结

硅电容,也称为硅质电容或硅二极管电容,是一种特殊的电容器。它利用硅二极管的结构来实现电容的功能。本文对硅电容的工作原理,结构特点,选型参数及设计注意事项进行总结。

fydar的博客 2328

python3的socket_python2 与 python3 socket编程的一点小区别

python3 与python2 其实有很大的区别,但为了写程序的人的方便,很多东西尽量还是按照python2 的函数,类以及方法来处理,但这里面的编码可能会有区别。前几天为了改以前写的一个socket 的东西,测试了python2 与 python3的在socket 方面的最基本的差别.在python3 中socket 接受bytes, 所以必须手动调用encode 以及 decode 方法.i...

weixin_39924486的博客 171

ST03N 里看不到 SE38 / SA38?别急,这不是没记录,而是被换了名字

摘要:SAP系统中SE38/SA38事务码在ST03N统计中可能"隐身",因其对话步骤被归集到对应的程序名(如SE38→RSABAPPROGRAM)。ST03N侧重工作负载聚合统计,而STAD提供短期明细记录。正确排查方法是:在ST03N中搜索程序名而非事务码,再通过STAD验证具体使用情况。这一现象在权限整改和审计中易造成误判,建议将程序名纳入常规监控,并区分ST03N(趋势分析)与STAD(事实校验)的不同用途。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 953

python3的socket_Python3的socket使用方法详解

这篇文章主要介绍了Python3的socket使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下需要实现两台机器的信息交互,使用 socket 进行调度。其中服务端为:#!/usr/bin/env python# -*- coding: utf-8 -*-import socket# 服务端ipserver_address = ('192...

weixin_39789094的博客 288

对称式目镜设计实例

对称式目镜设计实例

weixin_72050316的博客 1163

超临界二氧化碳发电技术深度解析

超临界二氧化碳发电技术正在突破传统热电转换的物理边界。作为新一代发

硬核科技 601

python3的socket_Python3中socket实现同步通信的实例讲解

这篇文章主要介绍了Python3 socket同步通信功能,结合简单实例形式分析了Python socket同步通信客户端与服务器端实现技巧,需要的朋友可以参考下本文实例讲述了Python3 socket同步通信。分享给大家供大家参考,具体如下:本文比较简单,适合入门用,作个笔记,方便日后抄写一个服务端,一个客户端,而且是阻塞方式,一次只能接受一个客户端连接并通信噢。客户端发送‘bye', 结束与...

weixin_39574065的博客 349

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python3 --- Socket

一、Socket简介        Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规...

__静禅__ 2708

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

python3 中socket的简单使用

使用工具: Ubuntu:vim Ubuntu:Python 3.7 网络调试助手 netassist 3.7(windows版本) 前言:网络编程实现计算机之间的通信,通过 指定的协议实现数据的发送与接收,从而达到计算机之间的通信。 TCP/UDP协议,计算机实现通信要遵守的规则: UDP协议简单但是不稳定,容易出现丢包的情况,而TCP相比UDP而言,比较复杂,稳定且数据不容易丢失。...

hujinlong6930的博客 998

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Python3之socket编程】

一、socket的定义   Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。 补充:也有人将socket说成ip+port,ip是用来标识

slw20010213的博客 906

python socket编程_Python3 网络编程

Python3 网络编程Python AI开发实战营 - Day3:面向对象编程之自定义类 - 创客学院直播室​www.makeru.com.cnPython AI开发实战营 - Python开发必备之网络编程 - 创客学院直播室​www.makeru.com.cnPython AI开发实战营 - 一堂课快速认识Python机器学习 - 创客学院直播室​www.makeru.com.cnPytho...

weixin_39864453的博客 76

2025 Python3 网络编程 Socket编程详解

本文介绍了Python中的Socket网络编程基础,主要涵盖TCP和UDP两种通信协议。TCP是基于连接的可靠传输协议,详细说明了服务端和客户端的处理流程及示例代码;UDP是无连接的简单数据传输协议,介绍了其服务端和客户端的实现方式。文章还讲解了如何使用Python标准库中的socketserver模块简化服务器开发,包括TCPServer和UDPServer的使用,以及自定义请求处理类的方法。最后提供了相关代码仓库地址和Python3学习资源链接。

qyydeep的博客 693

Python3 socket爬虫实现

代码实现: import socket url = 'www.baidu.com' html = '' sendHead = 'GET / HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n' % url sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)...

weixin_43690548的博客 2111
上一篇: Sqlalchemy automap Demo
下一篇: golang fmt格式“占位符”
SmallTankPy
博客等级 码龄10年 26粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值