Python:socket之不同的电脑间通信

udp

udp发送数据

import socket

# socket可以在不同的电脑通信,还可以在同一个电脑的不同程序通信
# 创建一个基于udp的网络socket连接
# AF_INET:表示这个socket是用来进行网络连接
# SOCK_DGRAM:表示连接是一个udp连接
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

# 发送数据
# data:要发送的数据,它是二进制的数据
# address:发送给谁,参数是一个元祖,元祖里有两个元素:第0个表示ip地址,第1个表示程序的端口号
# 给192.168.31.199这台主机的9000端口上发送了hello
s.sendto('hello'.encode('utf8'),('192.168.31.199',9000))

# 关闭socket
s.close()

udp接收数据

import socket

# 创建一个基于udp的网络socket连接
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

# 绑定端口号和ip地址
s.bind('192.168.31.199',9000)

# recvfrom接收数据
# content = s.recvfrom()
# print(content)
# 接收到的数据是一个元祖,元祖里有两个元素
# 第0个元素是接收到的数据,第1个元素是发送方的ip地址和端口号
data,addr = s.recvfrom()
print('从{}地址{}端口号接收到了消息,内容是:{}'.format(addr[0],addr[1],data.decode('utf8')))

s.close()

tcp

tcp发送数据

# 客户端

import socket

# 创建一个基于tcp的socket连接
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 在发送数据之前,必须要先和服务器建立连接
# 调用connect方法连接到服务器
s.connect(('192.168.1.104',9000))

s.send('hello'.encode('utf8'))

# udp直接使用sendto发送数据
# s.sendto('hello'.encode('utf8'),('192.168.1.104',9000))

s.close()

tcp接收数据

import socket

# 创建一个基于tcp的socket连接
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.bind(('192.168.1.104',9000))

s.listen(128) # 把socket变成一个被动监听的socket

client_socket,client_addr = s.accept() # 接收客户端的请求,接收到的结果是一个元祖,元阻里有两个元素,第0个元素是客户端的socke连接,第1个元素是客户端的ip地址和端口号t
data = client_socket.recv(1024) # tcp里使用recv获取数据,(udp里接收数据,使用的recvfrom)
print('接收到了{}客户端{}端口号发送的数据,内容是{}'.format(client_addr[0],client_addr[1],data.decode('utf8')))

s.close()

tcp参考链接
https://blog.csdn.net/w18306890492/article/details/82861889

猜你喜欢

转载自blog.csdn.net/weixin_42161670/article/details/114463933