使用Python编写一个TCP/IP服务器
发布时间:2023-12-27 13:08:44
下面是一个使用Python编写的TCP/IP服务器的例子:
import socket
def main():
# 创建一个TCP/IP的套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器地址和端口号
server_address = ('localhost', 8888)
server_socket.bind(server_address)
# 开始监听客户端的连接
server_socket.listen(5)
print('Server is listening on {}:{}'.format(*server_address))
try:
while True:
# 等待客户端连接
print('Waiting for a client connection...')
client_socket, client_address = server_socket.accept()
print('Accepted connection from {}:{}'.format(*client_address))
try:
while True:
# 从客户端接收数据
data = client_socket.recv(1024).decode('utf-8')
print('Received data from client: {}'.format(data))
if data:
# 向客户端发送响应数据
response = 'Hello, client!'
client_socket.sendall(response.encode('utf-8'))
else:
# 如果客户端断开连接,则跳出循环
break
finally:
# 关闭客户端连接
client_socket.close()
print('Connection with {} closed'.format(client_address))
finally:
# 关闭服务器套接字
server_socket.close()
if __name__ == '__main__':
main()
这个例子中,我们首先导入了socket模块,这个模块提供了底层的网络通信接口。然后我们定义了一个main函数作为程序的入口。
在main函数中,我们创建了一个TCP/IP套接字,并且使用bind方法绑定了服务器的地址和端口号。然后我们调用listen方法开始监听客户端的连接。
在一个无限循环中,我们使用accept方法等待客户端的连接。一旦一个客户端连接上,我们就会获得客户端的套接字和地址。然后我们使用一个内部的循环来接收和发送数据。
在接收数据之后,我们打印出接收到的数据,并且向客户端发送一个简单的响应。如果接收到的数据为空,表示客户端断开连接,我们就会跳出内部的循环。
最后,在外部的循环结束后,我们关闭服务器套接字。
你可以使用这个例子来创建一个TCP/IP服务器。只需在终端运行这个脚本,它会在本地的8888端口上监听客户端的连接,并向客户端发送响应。你可以使用Telnet或其他TCP/IP客户端工具来连接这个服务器,然后发送数据,接收服务器的响应。
