我是靠谱客的博主 悦耳雨,这篇文章主要介绍Python - 网络编程之Socket,现在分享给大家,希望可以做个参考。

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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部