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 中文站