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

很多编程语言中,都使用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一样!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kkkliaoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值