Python_Socket

Python Socket

socket

是通讯中的一种方式,主要用来处理客户端与伺服器端之串连,只需要protocol、IP、Port三项目即可进行网路串连。

Python套件

import socket

socket 常用函式

socket.socket([family], [type] , [proto] )
family: 串接的类型可分为 IPv4本机、IPv4网路、IPv6网路。
type: 串接可分为TCP/UDP。
protocol: 串接协定(通常预设为0)。

栏位类别名称宣告解释内容
家庭套接字.AF_UNIX于本机端进行串接
套接字.AF_INET于伺服器与伺服器之间进行串接
套接字.AF_INET6使用IPv6于伺服器与伺服器之间进行串接
类型套接字.SOCK_STREAM使用TCP(资料流)的方式提供可靠、双向、串流的通信频道
套接字.SOCK_DGRAM使用UDP()的方式通用的免连线讯息交换通道
socket变数名称 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #TCP宣告
socket变数名称 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #UDP宣告
  1. 绑定(主机,端口)
    • 用于伺服器端需监听的IP位址和Port。
    • host : IP位址
    • prot : port号
socket变数名称.bind(("127.0.0.1",8888))
  1. 听(值)
    • 用于伺服器端最多可接受多少socket串接。
    • value : 最大值
socket变数名称.listen(5)
  1. 接受()
    • 用于伺服器端接收串接,并会回传(client,address)串接对象与IP位址资讯。
client,addr = socket变数名称.accept() #client存串接对象、addr存连线资讯
  1. 连接(主机,端口)
    • 用于客户端指定要串接的IP位址跟Port号。
    • host : IP位址
    • prot : port号
socket变数名称.connect("127.0.0.1",80)

TCP_socket传接资料函式

  1. 发送(数据)
    • 可用于传送资料过去给串接对象,回传值为要送出的字数。
socket变数名称.send("hello!")
  1. recv(缓冲区大小)
    • 可用于接收资料,回传值为接收到的资料。
    • bufsize : 为宣告接收最多字数值
socket变数名称.recv(200)

UDP_socket传接资料函式

  1. 发送(数据,(地址,端口))
    • 可用于传送资料过去给串接对象,回传值为要送出的字数。
    • data : 欲传送之资料字串
    • addr : 欲传送之IP位址
    • port : 欲传送之Port号
socket变数名称.sendto("hello!",("127.0.0.1",80))
  1. recvfrom(缓冲区大小)
    • 可用于接收资料,并会回传(data,addr)接收到的资料和IP位址资讯。
    • bufsize : 为宣告接收最多字数值
data,addr = socket变数名称.recvfrom(200)
  1. 关闭()
    • 关闭socket连接

简单小实作(Python2)

  • 服务器端
import socketbind_ip = "0.0.0.0"
bind_port = 9999server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)server.bind((bind_ip,bind_port))server.listen(5)print "[*] Listening on %s:%d " % (bind_ip,bind_port)while True:client,addr = server.accept()print 'Connected by ', addrwhile True:data = client.recv(1024)print "Client recv data : %s " % (data)client.send("ACK!")
  • 客户端.py
import socketHOST = '0.0.0.0'
PORT = 9999s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))while True:cmd = raw_input("Please input msg:")s.send(cmd)data = s.recv(1024)print "server send : %s " % (data)

执行结果

  • 一开始server端先打开等待接收,当client端执行后会,server会显示连线的IP与port

  • 从client端输入资料传送后,server端收到资料并发送ACK!,client端可收到ACK,并等待使用者输入下一个要传送的资料

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

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

相关文章

Java中的Checked Exception和Unchecked Exception的区别

在Java中,异常分为两大类:已检查异常(Checked Exception)和未检查异常(Unchecked Exception)。 已检查异常是在编译时必须被捕获或声明的异常。换句话说,如果你的方法可能会抛出某个已检查异常&…

韩顺平0基础学Java——第33天

p653-674 坦克大战 继续上回游戏 将每个敌人的信息,恢复成Node对象,放进Vector里面。 播放音乐 使用一个播放音乐的类。 第二阶段结束了 网络编程 相关概念 (权当是复习计网了) 网络 1.概念:两台或多台设备通过一定物理设备连…

龙芯久久派到手开机测试

今天刚拿到龙芯久久派,没看到文档,只有视频,我来写个博客,做个记录,免得以后忘记 1.连接usb转ttl串口与龙芯久久派,如图所示。 2.将usb转串口接到电脑USB口 也就是这个接电脑上 3.打开串口调试助手或Secu…

[数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式4599张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4599 标注数量(xml文件个数):4599 标注数量(txt文件个数):4599 标注…

Android 11.0 修改系统显示大小导航栏消失

Android 11.0 修改系统显示大小导航栏消失 1.显示大小设置为大时,导航栏图标不显示。 设置为大,较大,最大时,导航栏图标不显示。 2.开始怀疑是导航栏被隐藏了,各种折腾无效。 3.发现: frameworks/base/pa…

amis源码 更新组件数据域的几种方法

更新组件数据域的几种方法: 默认都是合并数据,非覆盖(指定replace为true的才是覆盖): const comp amisScoped.getComponentById(id);//或者getComponentByName(name) 1.comp.setData(values, replace); //更新多个值values, r…

Linux多进程和多线程(一)

进程 进程的概念 进程(Process)是操作系统对一个正在运行的程序的一种抽象。它是系统运行程序的最小单位,是资源分配和调度的基本单位。 进程的特点如下 进程是⼀个独⽴的可调度的活动, 由操作系统进⾏统⼀调度, 相应的任务会被调度到cpu …

Python逻辑控制语句 之 判断语句--if else结构

1.if else 的介绍 if else :如果 ... 否则 .... 2.if else 的语法 if 判断条件: 判断条件成立,执行的代码 else: 判断条件不成立,执行的代码 (1)else 是关键字, 后⾯需要 冒号 (2)存在冒号…

【BILIBILIAS】安卓端B站视频下载神器,4K画质轻松get!

B站视频下载的方法之前给大家分享过网页版和电脑版的工具《太猛了!B站视频下载方法!三端通用!》,但是手机上的工具没有给大家分享过。今天今天就给大家分享一个安卓端的B站视频下载神器——BILIBILIAS,可以轻松下载4K画…

【UE 网络】专用服务器和多个客户端加入游戏会话的过程,以及GameMode、PlayerController、Pawn的创建流程

目录 0 引言1 多人游戏会话1.1 Why?为什么要有这个1.2 How?怎么使用? 2 加入游戏会话的流程总结 🙋‍♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏💥 标题:【UE 网络】在网络…

Linux部署Java项目至云服务器

文章目录 1.服务器环境2.发布部署过程2.1 执行SQL脚本2.2 修改代码中数据源的配置2.3 修改配置中的日志级别与日志文件路径2.4 打包Java程序2.5 上传到服务器2.6 后台运行2.7 服务器开放对应的端口2.8 访问验证 1.服务器环境 要将我们的项目部署到云服务器上我们就需要先有一个…

2024年值得信赖的在线代理IP服务商

在当今的网络世界中,代理IP服务成为了许多企业和个人在进行网络数据处理、多账号管理等任务时不可或缺的工具。然而,面对市场上众多的代理IP服务商,如何挑选出真正值得信赖的服务商成为了一大难题。作为专业的测评团队,我们近期对…

基于MIMO系统的预编码matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 最小均方误差(MMSE)准则 4.2 量化准则 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 …

HarmonyOS APP应用开发项目- MCA助手(持续更新中~)

简言: gitee地址:https://gitee.com/whltaoin_admin/money-controller-app.git端云一体化开发在线文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/agc-harmonyos-clouddev-view-0000001700053733-V5 注&#xff1…

【PyQt】20-QTimer(动态显示时间、定时关闭)

QTimer 前言一、QTimer介绍二、动态时间展示2.1 代码2.2 运行结果 三、定时关闭3.1 介绍他的两种用法1、使用函数或Lambda表达式2、带有定时器类型(高级) 3.2 代码3.3 运行结果 总结 前言 好久没学习了。 一、QTimer介绍 pyqt里面的多线程可以有两种实…

微信内置H5支付

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 场景是用户通过微信扫app内的收款码,跳到一个h5页面。然后完成支付。 代码实现的整体流程: 使用微信扫码,码是app内生成的,码…

Day38:LeedCode 1049. 最后一块石头的重量 II 494. 目标和 474.一和零

1049. 最后一块石头的重量 II 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果…

Java的NIO体系

目录 NIO1、操作系统级别下的IO模型有哪些&#xff1f;2、Java语言下的IO模型有哪些&#xff1f;3、Java的NIO应用场景&#xff1f;相比于IO的优势在哪&#xff1f;4、Java的IO、NIO、AIO 操作文件读写5、NIO的核心类 :Buffer&#xff08;缓冲区&#xff09;、Channel&#xff…

【proteus 51单片机入门】8*8led点阵

文章目录 前言如何点亮led点阵仿真图代码点亮led核心代码解析 爱心代码 滚动总结 前言 在嵌入式系统的开发中&#xff0c;LED点阵显示器是一种常见的显示设备&#xff0c;它可以用来显示各种图形和文字&#xff0c;为用户提供直观的信息反馈。本文将介绍如何使用Proteus软件和…

使用 MongoDB 剖析开放银行:技术挑战和解决方案

开放银行&#xff08;或开放金融&#xff09;在银行业掀起了一股颠覆性浪潮&#xff0c;它迫使金融机构&#xff08;银行、保险公司、金融科技公司、企业甚至政府机构&#xff09;迎接一个透明、协作和创新的新时代。这种模式转变要求银行与第三方提供商&#xff08;TPP&#x…