socket概述 python中如何使用TCP/UDP协议实现通信-教程

news2025/1/11 2:40:21

很多编程语言中,都使用scoket套接字实现网络通信。

Socket是对TCP/IP协议的封装,Socket本身就是一个调用接口(API),方便程序员用Socket使用TCP/IP协议簇,实现网络通信。

不同编程语言,shiyongSocket通信的语法有所区别,但基本原理类型相似。

它的两种方式,分别是TCP和UDP协议:

TCP和UDP都隶属于TCP/IP协议簇。

TCP是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。

UDP是一个非链接的协议,传输数据前 源端 和 终端 不建立连接,当它想传送时就简单地去传输和抓取数据。效率高,速度快,可靠性地。

如何使用TCP的方式实现通信?

1.编写客户端:发送消息给服务端 

1,导入模块(自行下载模块,其他文章有说明怎么下载第三方模块):

from socket import *

2,编写代码:

#创建socket对象
#AF_UNIX本机通信 AF_INET(IPV4) AF_INET6(IPV6)
#SOCK_STREAM(TCP)  SOCK_DGRAM(UDP) 
s=socket(AF_INET,SOCK_STREAM)

#和目标建立连接
s.connect(("localhost",6363)) #localhost代表本机 也可以写通局域网下其他人的ip 后面端口随便写个没使用的

#发送消息
s.send("你好!服务端!".encode())  #.encode()对字符串进行编码

#关闭socket
s.close()

2.编写服务端:接收客户端消息并显示

 1,和客户端一样,导入socket模块。

from socket import *

 2,编写代码:

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

#绑定监听端口
s.bind(("localhost",6363))

#监听
s.listen()

#等待消息
conn,adr=s.accept()

#接收信息
msg=conn.recv(1024) #接收信息的最大字节

print("--------:",msg.decode())

s.close()

运行测试:

先使用python自带的IDLE编辑器,运行服务端。

 运行客户端:

 

 正常执行成功无错误,查看服务端信息正常接收即可。

 说完TCP协议,那么如何使用UDP的方式实现通信?

udp协议是无连接的协议,所以在发送是不需要建立连接的。

和tcp传输差不多,但是udp不需要建立连接,直接发送信息就可以了。

客户端:

1,导入socket模块:

from socket import *

2,编辑代码:

#创建socket对象
#AF_UNIX本机通信 AF_INET(IPV4) AF_INET6(IPV6)
#SOCK_STREAM(TCP)  SOCK_DGRAM(UDP) 
s=socket(AF_INET,SOCK_DGRAM)

#发送信息
while 1==1:
	msg=input("---------<<:")
	s.sendto(msg.encode(),("localhost",3435))

#关闭socket
s.close()

服务端:

1,同上需要导入socket包!

from socket import *
import time

2,编写代码:

#创建socket对象 
s=socket(AF_INET,SOCK_DGRAM)

#绑定端口
s.bind(("localhost",3435))

#接收信息
while 1==1:
	msg=s.recv(1024)
	print("----:",msg.decode())

s.close()

运行程序测试,先开服务端,后开客户端。运行程序的方法和上方tcp一样!

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

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

相关文章

基于ROS2的costmap中Obstacle Layer中对障碍物信息的增加与删除机制的方案调研。

文章目录 1.背景2.目标3. 障碍物信息添加方式发送数据的数据结构与接收数据的数据结构 4. 障碍物清理机制4.1 可调参数4.2 优化光追算法4.3 障碍物跟踪 1.背景 基于costmap地图&#xff0c;使用navigation导航时&#xff0c;会出现由于激光雷达/图像测距的局限性&#xff0c; …

RocketMQ 在小米的多场景灾备实践案例

作者&#xff1a;邓志文、王帆 01 为什么要容灾&#xff1f; 在小米内部&#xff0c;我们使用 RocketMQ 来为各种在线业务提供消息队列服务&#xff0c;比如商城订单、短信通知甚至用来收集 IoT 设备的上报数据&#xff0c;可以说 RocketMQ 的可用性就是这些在线服务的生命线…

我写了个操作系统,却被别人给骂了!

前言 哈喽&#xff0c;小伙伴们好&#xff0c;我是子牙。是一个擅长深入研究Windows内核、Linux内核、Hotspot源码的资深程序员&#xff0c;之前是JVM专家&#xff0c;手写过JVM。所以做老师后&#xff0c;第一个打造的课程便是《手写JVM》小班&#xff0c; 一经推出就受到了学…

我的苹果手机的越狱之旅

最近因为业务需要&#xff0c;需要一台越狱手机&#xff1b;就把测试机6plus拿来做越狱使用&#xff0c;在此之前先大致说明一下越狱的原理、应用、流程以及可能存在的问题&#xff1a; 越狱是指通过一些技术手段&#xff0c;使iOS设备可以访问到iOS系统的全部控制权&#xff0…

抛弃Vuex,使用Pinia

Pinia 符合直觉的 Vue.js 状态管理库 文章目录 Pinia 符合直觉的 Vue.js 状态管理库1.简介2.为什么要使用Pinia3.安装3.1 挂载pinia 4.创建一个store容器4.1 Option 参数4.2 Setup 参数 5.三个重要概念5.1 State5.2 Getter**5.3 Action** 6.购物车实例6.1 商品列表组件 1.简介 …

【Python-Django】如何在一个项目中创建多个app模块

django开发案例&#xff1a;a​​​​​【Django】开发日报_1_Day&#xff1a;用户管理系统案例-创建项目_django 开发用户管理系统_代码骑士的博客-CSDN博客 前面做过的管理系统项目功能比较单一&#xff0c;只用一个模块就能解决问题。如果想创建多个不同的模块的话&#xf…

Nodejs之HTTP模块

目录 前言一&#xff0c;创建HTTP模块1.1 基本使用1.2 注意事项 二&#xff0c;查看报文2.1 浏览器查看HTTP报文2.2 利用request获取HTTP请求报文2.2.1 获取请求行和请求头 2.2.2 获取请求路径2.2.3 获取查询字符串 三&#xff0c;跟请求报文相关的练习四&#xff0c;设置响应报…

聊天机器人开发实战--(微信小程序+SpringCloud+Pytorch+Flask)【完整版】

文章目录 前言架构小程序端管理端运维端 交互聊天页面聊天发送流程历史聊天记录个人中心 总结 前言 没想到从五一之后&#xff0c;到现在鸽了那么久。没办法&#xff0c;实话实说&#xff0c;确实忙&#xff0c;五一期间就没怎么休息&#xff0c;开局第一周&#xff0c;准备IE…

Scala学习(七)---面向对象特质

文章目录 1.面向对象特质(Trait)2.特质声明2.1 特质的特点2.2 特质冲突2.3 特质叠加2.4 特质自身类型2.5 特质和抽象类的区别扩展 1.面向对象特质(Trait) 在Scala语言中&#xff0c;采用特质trait(特征)来代替接口的概念&#xff0c;也就是说&#xff0c;多个类具有相同的特质…

分享7款优质免费的Figma“中文插件”

今天我要向你们分享一些 Figma 的“中文插件”&#xff0c;这些插件不仅功能强大&#xff0c;而且免费使用&#xff0c;非常方便&#xff0c;而且是完全中文的页面使用起来非常便捷&#xff0c;可以大大提高设计师的效率和体验。 1、「平面 3D」 插件 首先是平面 3D 插件。该…

OpenVINO 2022.3之九:Post-training Optimization Tool (POT)

OpenVINO 2022.3之九&#xff1a;Post-training Optimization Tool (POT) Post-training Optimization Tool (POT) 通过在已训练好的模型上应用量化算法&#xff0c;将模型的权重和激活函数从 FP32/FP16 的值域映射到 INT8 的值域中&#xff0c;从而实现模型压缩&#xff0c;以…

驱动开发:内核实现进程汇编与反汇编

在笔者上一篇文章《驱动开发&#xff1a;内核MDL读写进程内存》简单介绍了如何通过MDL映射的方式实现进程读写操作&#xff0c;本章将通过如上案例实现远程进程反汇编功能&#xff0c;此类功能也是ARK工具中最常见的功能之一&#xff0c;通常此类功能的实现分为两部分&#xff…

WXSS 模板样式

WXSS WXSS&#xff08;WeiXin Style Sheets&#xff09;是一套样式语言&#xff0c;用来美化 WXML 的组件样式&#xff0c;类似于网页开发中的 CSS WXSS 和 CSS 的关系 WXSS 具有 CSS 大部分特性&#xff0c;同时&#xff0c;WXSS 还对 CSS 进行了扩充以及修改&#xff0c;以…

AJ-Report是一个完全开源,拖拽编辑的可视化设计工具

简介 AJ-Report是全开源的一个BI平台&#xff0c;酷炫大屏展示&#xff0c;能随时随地掌控业务动态&#xff0c;让每个决策都有数据支撑。     多数据源支持&#xff0c;内置mysql、elasticsearch、kudu驱动&#xff0c;支持自定义数据集省去数据接口开发&#xff0c;目前已支…

分布式应用之监控平台zabbix

1.监控系统的相关知识 1.1 监控系统运用的原因 当我们需要实时关注与其相关的各项指标是否正常&#xff0c;往往存在着很多的服务器、网络设备等硬件资源&#xff0c;如果我们想要能够更加方便的、集中的监控他们&#xff0c;zabix可以实现集中监控管理的应用程序 监控的初衷…

历届蓝桥杯青少年编程比赛 计算思维题真题解析【已更新3套 持续更新中】

一、计算思维组考试范围 计算思维组面向小学生&#xff08;7-12 岁&#xff0c;约 1-6 年级&#xff09;&#xff0c;通过设计多个角度的考核题目、层次科学的试卷组合、线上限时的考试形式&#xff0c;更加精确地考查学生的计算能力、反应能力、思维与分析能力&#xff0c;使…

【产品成长】产品专业化提升路径

产品专业化 产品专业化就是上山寻路。梳理一套作为产品经理的工作方法。 以图为例&#xff0c;做一个归纳。 第一&#xff1a;梳理自己的设计方法。就是拿到一个需求点之后&#xff0c;如何进行需求分析&#xff0c;如何还原业务情况&#xff0c;最终进行产品设计&#xff0c…

基于QEMU的RISC-V架构linux系统开发(三)——基于buildroot的最小根文件系统配置与编译

1.buildroot官网下载最新版本的buildroot。 https://buildroot.org/download.html 图1 下载最新版本的buildroot压缩包 2.拷贝buildroot软件包到工作目录&#xff0c;并解压buildroot。 图2 解压buildroot软件包 3.新建编译脚本build_risc-v.sh&#xff0c;使用buildroot自带的…

深度学习笔记之递归网络(五)递归神经网络的反向传播过程

机器学习笔记之递归网络——递归神经网络的反向传播过程 引言回顾&#xff1a;递归神经网络的前馈计算过程场景构建前馈计算描述 反向传播过程各参数的梯度计算各时刻损失函数梯度计算损失函数对各时刻神经元输出的梯度计算 Softmax \text{Softmax} Softmax回归的梯度计算关于 …