1. socket的使用
UDP协议
使用socket方法创建会话连接
AF_INET: 表示这个socket是用来进行网络连接
SOCK_DGRAM:表示连接是一个UDP连接
# /usr/bin/python3
# —*— encoding:utf-8 —*—
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('30.208.35.60', 8000))
# 使用sendto()方法实现消息发送
s.sendto('massgerInfo'.encode('utf-8'), ('30.208.35.60', 8000))
data, addr = s.recvfrom(1024)
print('{}:{}n{}'.format(addr[0],addr[1],data.decode('utf-8')))
# 关闭会话连接
# s.close()
TCP协议
TCP客户端
import socket
# socket.SOCK_STREAM:表示建立一个TCP协议的连接
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 使用connect()方法与服务端建立TCP连接
s.connect(('30.208.35.60', 9090))
# 使用send()方法实现消息发送
s.send('TCP协议发送信息'.encode('utf-8'))
TCP服务端
# /usr/bin/python3
# —*— encoding:utf-8 —*—
import socket
# 创建一个TCP Socket连接
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器IP及服务端口
server.bind(('30.208.35.60', 9090))
# 服务监听(队列)
server.listen(128)
# 使用accept()方法接收客户端连接请求
data = server.accept()
print(data)
# 允许客户端的TCP连接请求
clinet_socket, clinet_addr = server.accept()
# 接收客户端传递的数据
content = clinet_socket.recv(1024).decode('utf8')
print('接收到来自【{}】端口为:【{}】的数据信息,内容为:{}'.format(clinet_addr[0], clinet_addr[1], content))
========================
(<socket.socket fd=4, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('30.208.35.60', 9090), --> 客户端的socket数据
raddr=('30.208.44.238', 49437)>, ('30.208.44.238', 49437)) --> 客户端的请求IP及端口信息
¬
接收到来自【30.208.44.238】端口为:【49714】的数据信息,内容为:来自28.148的tcp连接消息
使用socket实现简易文件下载
# /usr/bin/python3
# —*— encoding:utf-8 —*—
# 服务端
import socket, os
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('Server_IP', Server_Port))
server_socket.listen(128)
clinet_socket, clinet_addr = server_socket.accept()
data = clinet_socket.recv(1024).decode('utf-8')
if os.path.isfile(data):
with open(file=data, mode='rb') as file:
content = file.read()
clinet_socket.send(content)
else:
clinet_socket.send('文件【{}】不存在'.format(data).encode('utf8'))
server_socket.close()
# 客户端
import socket
clinet_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
clinet_socket.connect(('Server_IP',Server_Port))
file_name = input('输入文件名:')
clinet_socket.send(file_name.encode('utf-8'))
data = clinet_socket.rev(1024).decode('utf-8')
print(data)
最后
以上就是悦耳雨最近收集整理的关于Python - 网络编程之Socket的全部内容,更多相关Python内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复