欢迎访问宙启技术站
智能推送

Python中socket库的使用方法详解

发布时间:2023-12-26 00:47:31

Python中的socket库是用来实现网络编程的常用模块。它提供了一种简单而强大的数据传输方式,可以在不同的计算机之间进行通信。以下是Python中socket库的使用方法及相关的示例代码。

首先需要导入socket库:

import socket

接下来可以创建一个socket对象:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

这里的AF_INET指定了使用IPv4地址族,SOCK_STREAM指定了使用TCP协议。

接下来可以设置socket的选项:

s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

这里的SOL_SOCKET指定了要设置的选项级别,SO_REUSEADDR表示可以重用本地地址和端口。

然后可以绑定socket到一个指定的地址和端口:

s.bind(('127.0.0.1', 8888))

这里的('127.0.0.1', 8888)是一个元组,表示地址和端口。

接下来可以监听连接请求:

s.listen(5)

这里的5表示最多可以接收5个连接请求。

然后可以接收连接请求,并返回一个新的socket对象和客户端地址:

client_socket, addr = s.accept()

接下来可以接收客户端发送的数据:

data = client_socket.recv(1024)

这里的1024表示每次最多接收1024个字节的数据。

然后可以发送数据给客户端:

client_socket.send(b'Hello, client!')

这里的b'Hello, client!'表示发送的数据,需要使用字节字符串。

最后需要关闭socket:

client_socket.close()
s.close()

下面是一个完整的使用socket库实现简单web服务器的例子:

import socket

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# 绑定socket到地址和端口
s.bind(('127.0.0.1', 8888))

# 监听连接请求
s.listen(5)

print('Server started, waiting for connection...')

while True:
    # 接收连接请求
    client_socket, addr = s.accept()
    print(f'New connection from {addr}')

    # 接收客户端发送的数据
    data = client_socket.recv(1024)
    print(f'Received data: {data.decode()}')

    # 发送响应给客户端
    response = 'HTTP/1.1 200 OK\r
\r
Hello, client!'
    client_socket.send(response.encode())

    # 关闭socket
    client_socket.close()