使用Python语言的Socket库实现客户端与服务端实时通信
时间: 2024-05-03 20:19:37 浏览: 89
客户端和服务端实时通信可以使用Python中的Socket库来实现。以下是一个简单的示例代码,其中客户端和服务端建立连接后可以互相发送消息。
服务端代码:
```python
import socket
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
# 设置端口号
port = 9999
# 绑定端口号
server_socket.bind((host, port))
# 设置最大连接数,超过后排队
server_socket.listen(5)
while True:
# 建立客户端连接
client_socket, addr = server_socket.accept()
print('连接地址:%s' % str(addr))
# 发送欢迎消息给客户端
message = '欢迎访问服务器!' + "\r\n"
client_socket.send(message.encode('utf-8'))
while True:
# 接收客户端消息
data = client_socket.recv(1024).decode('utf-8')
if not data:
break
print("客户端消息:%s" % data)
# 发送消息给客户端
message = '服务端已收到消息:' + data + "\r\n"
client_socket.send(message.encode('utf-8'))
# 关闭客户端连接
client_socket.close()
```
客户端代码:
```python
import socket
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
# 设置端口号
port = 9999
# 连接服务端
client_socket.connect((host, port))
while True:
# 发送消息给服务端
message = input("请输入消息:")
client_socket.send(message.encode('utf-8'))
# 接收服务端消息
data = client_socket.recv(1024).decode('utf-8')
print("服务端消息:%s" % data)
# 判断是否退出
if message == 'exit':
break
# 关闭客户端连接
client_socket.close()
```
在以上代码中,服务端使用`socket`库创建一个TCP socket对象,并绑定端口号。在循环中等待客户端连接,一旦客户端连接成功,就向客户端发送欢迎消息,并进入循环等待接收客户端发送的消息。当客户端关闭连接时,服务端也关闭连接。
客户端同样使用`socket`库创建一个TCP socket对象,并连接到指定的服务端和端口号。然后进入循环等待用户输入消息并发送给服务端。同时也在循环中接收服务端的消息并打印出来,直到用户输入`exit`退出循环和关闭连接。
以上是一个简单的客户端和服务端实时通信的示例,可以根据实际需要进行修改和扩展。
阅读全文