【编程】Python 套接字

套接字(socket) 编程是计算机网络编程最基本的开发技术。套接字是实现互联网两个程序之间的双向通信的一个端点,通过套接字,服务器和客户端程序可以读取或写入信息进行信息交通。Python 的套接字编程非常简单,socket 模块提供了访问 BSD 套接字接口的方法,可以应用于目前的所有操作系统当中。

Python 的套接字编程一般由两部分构成:

  • Python 服务器端程序
  • Python 客户端程序

Python 的服务器套接字编程

实例练习基于控制台应用,服务监听端口设定 8888。

server.bind((本机, 端口)) 
server.listen(1)

服务套接字监听客户端请求,读取并返回消息到客户端。

Python 服务器端程序实例 (Server.py)

import socket 
LOCALHOST = "127.0.0.1"
PORT = 8888
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((LOCALHOST, PORT))
server.listen(1)
print("服务已启动")
print("等待客户请求..")
while True:
clientConnection,clientAddress = server.accept()
print("连接的客户端 :" , clientAddress)
data = clientConnection.recv(1024)
print("客户消息 :" , data.decode())
clientConnection.send(bytes("成功连接了服务器!!",'UTF-8'))
clientConnection.close()

Python 的客户端套接字编程

客户端程序连接服务端口 8888,因为程序都在同一台机器,所以使用本地 IP 地址 127.0.0.1,若在不同的机器,则使用对应的机器 IP 地址。

client.connect(服务器, 端口)   

客户端程序运行,进行服务器连接请求,输入消息发送到服务器,并接收服务器回应。

Python 客户端程序实例(client.py)

import socket 
SERVER = "127.0.0.1"
PORT = 8888
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((SERVER, PORT))
client.sendall(bytes("来自客户端的消息",'UTF-8'))
data = client.recv(1024)
print(data.decode())
client.close()

运行程序

创建并保存服务端程序文件,Server.py,客户端程序文件 ,client.py。首先运行服务端程序,在命令行执行

python server.py

在新的命令行窗口执行

python client.py

异步套接字编程

上面的例子不能进行信息的重复沟通,可以通过循环的程序结构完成信息的重复沟通设计。

Python 服务器端程序实例 (Server.py)

import socket 
LOCALHOST = "127.0.0.1"
PORT = 8888
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((LOCALHOST, PORT))
server.listen(1)
print("服务已启动")
print("等待客户端的请求..")
clientConnection,clientAddress = server.accept()
print("连接的客户端 :" , clientAddress)
msg = ''
while True:
in_data = clientConnection.recv(1024)
msg = in_data.decode()
if msg=='bye':
break
print("客户消息 :" , msg)
out_data = input()
clientConnection.send(bytes(out_data,'UTF-8'))
print("客户已断开连接....")
clientConnection.close()

Python 客户端程序实例(client.py)

import socket 
SERVER = "127.0.0.1"
PORT = 8888
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((SERVER, PORT))
client.sendall(bytes("来自客户端的消息",'UTF-8'))
while True:
in_data = client.recv(1024)
print("服务器消息 :" ,in_data.decode())
out_data = input()
client.sendall(bytes(out_data,'UTF-8'))
if out_data=='bye':
break
client.close()

运行程序

创建并保存新的服务端程序文件,Server.py,客户端程序文件 ,client.py。首先运行服务端程序,启动服务监听。

在新的窗口启动客户端程序,建立服务连接,并发送默认信息,新的程序可以进行重复的信息沟通,如果想退出程序,发送 “bye” 消息。



【编程】Python FTP客户端
【编程】Python 网页
【编程】Python 访问Web
【编程】Python IP地址
【编程】Python 主机名
【编程】Python 文件目录
【编程】Python 目录操作
【编程】Python 使用Split
【编程】Python 读文件
【编程】Python 文件操作

此条目发表在人工智能, 服务器, 程序开发分类目录,贴了, , 标签。将固定链接加入收藏夹。