python socket编程

python socket编程

Python 中的 socket 编程是通过 socket 模块来实现的,它提供了标准的 BSD 套接字接口。使用 socket,你可以实现网络通信,创建客户端和服务器应用程序。这里,我将介绍如何在 Python 中使用 socket 创建一个简单的服务器和客户端。

Socket 服务器端

服务器端代码主要任务是监听一个端口,接受客户端的连接请求,并根据请求做出响应。下面是一个简单的服务器端实现:

import socket

def server_program():
    # 获取本地主机名
    host = socket.gethostname()
    port = 5000  # 端口号

    server_socket = socket.socket()  # 创建 socket 对象
    server_socket.bind((host, port))  # 绑定端口

    server_socket.listen(2)  # 监听,最多可以连接两个客户端
    print("Waiting for a connection...")

    while True:
        # 建立客户端连接
        conn, address = server_socket.accept()  # 接受新连接
        print("Connection from: " + str(address))
        while True:
            data = conn.recv(1024).decode()  # 接收数据,每次接收1024字节
            if not data:
                # 如果没有数据,跳出循环
                break
            print("From connected user: " + data)
            data = input(' -> ')
            conn.send(data.encode())  # 发送数据给客户端

        conn.close()  # 关闭连接

if __name__ == '__main__':
    server_program()

Socket 客户端

客户端代码主要任务是连接服务器,发送请求,并接收服务器的响应。下面是一个简单的客户端实现:

import socket

def client_program():
    host = socket.gethostname()  # 服务器的主机名
    port = 5000  # 服务器的端口号

    client_socket = 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('Received from server: ' + data)  # 显示响应
        message = input(" -> ")  # 再次输入消息

    client_socket.close()  # 关闭连接

if __name__ == '__main__':
    client_program()

关键点

  1. 创建 Socket

    • 使用 socket.socket() 创建一个新的 socket 对象。
  2. 服务器绑定和监听

    • 服务器使用 bind() 方法绑定到一个特定的地址和端口上。
    • 使用 listen() 方法开始监听传入的连接请求。
  3. 接受连接

    • 使用 accept() 方法接受客户端的连接请求。
  4. 发送和接收数据

    • 使用 send()recv() 方法在客户端和服务器之间发送和接收数据。
  5. 关闭 Socket

    • 使用 close() 方法关闭 socket。

这是 Python 中使用 socket 进行网络编程的基本介绍。你可以根据需要扩展这些基本示例,添加错误处理、多线程或多进程功能来处理多个客户端连接等。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值