Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

python socket通信

作者:任光阴风干ゝ影象   发布日期:2025-08-08   浏览:105

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.")

解释说明:

  1. 服务器端 (server_program)

    • 使用 socket.socket() 创建一个套接字对象。
    • 使用 bind() 方法将套接字绑定到指定的主机和端口。
    • 使用 listen() 方法使服务器监听来自客户端的连接请求。
    • 使用 accept() 方法接受客户端的连接,并与之通信。
    • 在循环中接收客户端发送的数据并打印出来,然后从控制台读取输入并发送回客户端。
    • 最后关闭连接。
  2. 客户端 (client_program)

    • 使用 socket.socket() 创建一个套接字对象。
    • 使用 connect() 方法连接到服务器。
    • 在循环中从控制台读取用户输入并发送给服务器,同时接收服务器的响应并打印出来。
    • 当用户输入 bye 时,退出循环并关闭连接。
  3. 主程序

    • 提示用户选择运行服务器还是客户端模式。
    • 根据用户的选择调用相应的函数。

上一篇:python 逻辑回归

下一篇:python 写入csv文件

大家都在看

python时间格式

python开发windows应用程序

python中len是什么意思

python ord和chr

python中的yield

python自定义异常

python判断路径是否存在

python list.pop

python的for i in range

npm config set python

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站