import socket
# 创建一个服务器端的Socket对象
def server_program():
# 获取主机名
host = socket.gethostname()
port = 5000 # 初始化端口
server_socket = socket.socket() # 创建socket对象
server_socket.bind((host, port)) # 绑定host和port
# 监听端口,等待客户端连接(最多允许1个未处理的连接)
server_socket.listen(1)
print(f"Server listening on {host}:{port}")
conn, address = server_socket.accept() # 接受新的连接
print(f"Connection from {address} has been established.")
while True:
# 接收数据
data = conn.recv(1024).decode()
if not data:
# 如果没有数据,跳出循环
break
print(f"Received from client: {data}")
# 发送数据回客户端
data = input(' -> ')
conn.send(data.encode()) # 发送数据给客户端
# 关闭连接
conn.close()
# 创建一个客户端的Socket对象
def client_program():
host = socket.gethostname() # 获取主机名
port = 5000 # 要连接的服务器端口
client_socket = socket.socket() # 实例化
client_socket.connect((host, port)) # 连接到服务器
message = input(" -> ") # 用户输入要发送的消息
while message.lower().strip() != 'bye':
client_socket.send(message.encode()) # 发送消息
data = client_socket.recv(1024).decode() # 接收响应
print(f"Received from server: {data}") # 显示响应
message = input(" -> ") # 再次获取用户输入
client_socket.close() # 关闭连接
if __name__ == '__main__':
# 根据需要选择运行服务器或客户端代码
mode = input("Run as (server/client): ").strip().lower()
if mode == 'server':
server_program()
elif mode == 'client':
client_program()
else:
print("Invalid mode selected.")
服务器端 (server_program
):
socket.socket()
创建一个套接字对象。bind()
方法将套接字绑定到指定的主机和端口。listen()
方法使服务器监听来自客户端的连接请求。accept()
方法接受客户端的连接,并与之通信。客户端 (client_program
):
socket.socket()
创建一个套接字对象。connect()
方法连接到服务器。bye
时,退出循环并关闭连接。主程序:
上一篇:python 逻辑回归
下一篇:python 写入csv文件
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站