如下主要是实现单客户端连接通信,如下为Socket模块的常用属性和方法介绍。
如要实现多客户端连接,请使用threading模块的多线程技术实现。
属性:
• socket.AF_INET:IPv4 地址族。
• socket.AF_INET6:IPv6 地址族。
• socket.SOCK_STREAM:TCP 协议类型。
• socket.SOCK_DGRAM:UDP 协议类型。
方法:
• socket.socket():创建一个新的 socket 对象。
• socket.bind():将 socket 绑定到指定地址和端口。
• socket.listen():使 socket 监听传入的连接。
• socket.accept():接受传入的连接并返回新的套接字对象和地址。
• socket.connect():建立一个连接到指定的地址和端口。
• socket.recv():接收指定数量的数据。
• socket.send():发送指定数量的数据。
• socket.close():关闭套接字连接。
服务器端代码如下:
import socket
HOST = '127.0.0.1'
PORT = 8888
# 创建一个新的 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定 socket 到指定地址和端口
server_socket.bind((HOST, PORT))
print('等待客户端的连接')
# 开始监听传入的连接
server_socket.listen()
# 循环处理传入的连接
while True:
# 接受传入的连接并返回新的套接字对象和地址,server_socket.accept()值是个元组,同时赋值给了两个变量。
client_socket, address = server_socket.accept()
print(f"{address}已连接")
while True:
# 接收客户端发送的数据
data = client_socket.recv(1024)
# 将数据转换为字符串并输出
print(data.decode())
# 发送响应数据给客户端
response = input("请输入你要发给客户端数据:")
client_socket.send(response.encode())
# 关闭客户端连接
client_socket.close()
#退出服务器连接
server_socket.close()
客户端代码如下
import socket
#定义要连接的服务器IP端口信息
server_ip = ('127.0.0.1',8888)
#定义使用TCP/IP
client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#连接到服务器。
client_socket.connect(server_ip)
#通过死循环实现连续交互
while True :
#发送消息给服务器
mas = input('请输入你要发送的消息:')
client_socket.send(mas.encode())
#接收来自服务器的消息
data = client_socket.recv(1024)
print(f"{data.decode()}")
client_socket.close()
可使用pyinstaller模块打包成exe程序给windwos运行使用,实现远程执行powershell命令。建议在windwos上的pycharm打包打包,否则打包出来的exe程序会有兼容性问题。
dengpeng@MacBook-Pro-2 dengpeng % pyinstaller --onefile Linux/SSH_Client.py