当前位置:首页 > 学习笔记 > 正文内容

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

廖万里2年前 (2023-05-31)学习笔记22657

很多编程语言中,都使用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()对字符串进行编码#关闭sockets.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编辑器,运行服务端。

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

 运行客户端:

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

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

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


 说完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))#关闭sockets.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一样!

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



本文链接:https://www.kkkliao.cn/?id=291 转载需授权!

分享到:

版权声明:本文由廖万里的博客发布,如需转载请注明出处。


“socket概述 python中如何使用TCP/UDP协议实现通信-教程” 的相关文章

javaWeb邮箱验证

javaWeb邮箱验证

我们的日常生活中用到很多用户注册啦之类的,为了提高安全性和用户体验,我们也会遇到邮箱通过邮箱确定验证信息的例子。首先我们看一下需要哪些jar包,其中activation.jar和mail.jar是邮件发送不可少的,servlet和jstl在程序中也有用到,所以大家先将jar包导入项目中区。然后就是我...

如何配置mybatis并且自动生成实体类pojo和mapper

如何配置mybatis并且自动生成实体类pojo和mapper

1如何配置mybatis1.1 复制jar 点击下载mybatis和mysql的jar包:mybatis和mysql的jar包 - 万策云盘编辑1.2 复制配置文件 resources配置文件下载: resources配置文件 - 万策云盘编辑1.3...

MyBatis-写分页的几种方法,怎么写分页最简单

MyBatis-写分页的几种方法,怎么写分页最简单

1、就是直接使用我们的SQL语句进行分页,也就是在Mapper里面加上分页的语句就好了。比如MySQL添加一个limit 2,4。这种方式弊端很大,比如我们不用MySQL了,所有的代码都要修改。2、MyBatis中的分页的插件PageHelper,3、自己手写分页框架。这种用的比较少,不是说写不出来...

Spring框架提供的多种属性注入方式

Spring框架提供的多种属性注入方式

1 set注入注入的成员变量必须要封装  set方法注入bean<!--成员变量对象--><!--<bean id="u" class="com.bdqn.User"></bean&g...

如何在程序中实现多进程,多进程概述

如何在程序中实现多进程,多进程概述

 多进程:在一个程序中实现多任务处理,可以使用多线程和多进程两种方式。多进程创建:使用Process、类,每次实例化这个类的时候,就创建一个进程对象。编辑 多进程:一个程序运行中,产生了多个进程。N个正在运行的程序----至少N个程序1个程序------可能只有一个进程/也可能有...

Python如何实现多线程,多线程概述

Python如何实现多线程,多线程概述

 线程:线程是CPU调度的基本单位,是进程中具体的执行单元。进程包含线程,一个进程中至少包含一个线程;如果一个进程中包含了多个线程,称为多线程。多线程的实现:编辑 1,引入threading模块。import threading import time2,编...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。