使用accept()方法在Python中创建TCP服务器
发布时间:2023-12-23 02:50:20
在Python中,可以使用socket模块来创建TCP服务器。通过调用socket模块的socket()方法创建一个套接字对象,然后可以使用bind()方法将套接字绑定到指定的IP地址和端口。接下来,使用listen()方法进行监听,该方法指定服务器最大连接数。最后,使用accept()方法等待客户端连接并接受连接。
下面是一个具体的例子,展示了如何使用accept()方法创建一个简单的TCP服务器:
import socket
# 创建一个套接字对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取主机名
host = socket.gethostname()
port = 12345
# 绑定主机名和端口
server_socket.bind((host, port))
# 设置最大连接数为5
server_socket.listen(5)
while True:
# 等待客户端连接
client_socket, address = server_socket.accept()
print(f"接收到来自{address}的连接!")
# 向客户端发送消息
message = "欢迎来到服务器!"
client_socket.send(message.encode('utf-8'))
# 关闭客户端连接
client_socket.close()
在上述代码中,我们首先导入了socket模块。然后,我们使用socket.socket()方法创建了一个套接字对象server_socket。接下来,我们使用socket.gethostname()方法获取本地主机名,并将端口设置为12345。然后,我们使用bind()方法将套接字绑定到主机名和端口。之后,我们调用listen()方法并将最大连接数设置为5。最后,我们使用accept()方法来等待客户端连接并打印客户端的地址。之后,我们向客户端发送欢迎消息,并关闭客户端连接。
要测试该服务器,可以使用另一个Python脚本作为客户端连接到服务器,并接收服务器发送的消息,如下所示:
import socket
# 创建一个套接字对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取主机名
host = socket.gethostname()
port = 12345
# 连接服务器
client_socket.connect((host, port))
# 接收服务器发送的消息
message = client_socket.recv(1024)
print(message.decode('utf-8'))
# 关闭连接
client_socket.close()
在这个简单的例子中,我们创建了一个套接字对象client_socket,并将其连接到服务器的主机名和端口。然后,我们使用recv()方法接收服务器发送的消息,并打印出来。最后,我们关闭客户端连接。
要在本地测试这两个脚本,可以先运行服务器脚本,然后再运行客户端脚本。你应该看到客户端打印出服务器发送的欢迎消息。
