如何实现局域网内不同设备进行打字聊天,要求代码分段解释
时间: 2024-02-02 09:03:18 浏览: 89
要实现局域网内不同设备进行打字聊天,可以采用 Socket 编程。下面是 Python 代码示例,分别对应客户端和服务器端。
服务器端:
```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)
if not data:
break
print("客户端消息: %s" % data.decode('utf-8'))
message = "已收到您的消息!" + "\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))
# 接收欢迎消息
data = client_socket.recv(1024)
print("收到消息: %s" % data.decode('utf-8'))
# 发送消息给服务器
while True:
message = input("请输入消息:")
client_socket.send(message.encode('utf-8'))
data = client_socket.recv(1024)
print("收到消息: %s" % data.decode('utf-8'))
# 关闭连接
client_socket.close()
```
代码解释:
1. 服务器端首先创建一个 socket 对象,指定使用 IPv4 和 TCP 协议(AF_INET 和 SOCK_STREAM)。然后获取本地主机名称和端口号(在这里使用了固定的端口号 9999)。接着绑定端口号并开始监听客户端连接。当有客户端连接时,服务器端接收到客户端的请求并返回欢迎消息。之后服务器端不断地接收客户端的消息,并发送已收到消息的回复,直到客户端关闭连接。
2. 客户端首先创建一个 socket 对象,指定使用 IPv4 和 TCP 协议(AF_INET 和 SOCK_STREAM)。然后获取本地主机名称和端口号(在这里使用了固定的端口号 9999)。接着连接服务器端。客户端先接收欢迎消息,然后不断地输入消息并发送给服务器端,同时接收服务器端已收到消息的回复,直到客户端关闭连接。
以上是一个简单的局域网内打字聊天的示例代码,希望能对你有所帮助。
阅读全文