PYTHON使用socket模块,实现服务器和客户端进行数据交互(聊天室功能)
时间: 2024-09-14 15:06:03 浏览: 55
在Python中使用socket模块可以创建网络上的服务器和客户端,实现基本的数据交互。以下是一个简单的聊天室功能实现的示例:
服务器端代码示例:
```python
import socket
import threading
def client_handler(connection, address):
try:
print(f"连接地址:{address}")
while True:
message = connection.recv(1024)
if not message:
break
print(f"来自{address}的消息: {message.decode()}")
connection.sendall("消息已收到".encode())
finally:
connection.close()
def main():
host = '127.0.0.1' # 本地主机地址
port = 12345 # 非特权端口号
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((host, port))
server_socket.listen(5)
print("服务器启动,等待连接...")
try:
while True:
conn, addr = server_socket.accept()
thread = threading.Thread(target=client_handler, args=(conn, addr))
thread.start()
finally:
server_socket.close()
if __name__ == "__main__":
main()
```
客户端代码示例:
```python
import socket
def main():
host = '127.0.0.1' # 服务器地址
port = 12345 # 服务器监听的端口号
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((host, port))
try:
print("已连接到聊天服务器,输入消息后按回车发送。输入 'exit' 退出聊天。")
while True:
message = input(">> ")
if message.lower() == 'exit':
break
client_socket.sendall(message.encode())
response = client_socket.recv(1024)
print(f"服务器回复: {response.decode()}")
finally:
client_socket.close()
if __name__ == "__main__":
main()
```
在上述代码中,服务器端创建了一个socket并监听指定的端口,接受客户端的连接请求。每当有新的连接时,服务器会为每个客户端创建一个新的线程来处理数据的接收和发送。
客户端连接到服务器后,用户可以输入消息并发送。服务器接收消息后,可以进行相应的处理,并将回复发送回客户端。
注意:这只是一个非常基础的聊天室功能实现,没有错误处理、加密、认证等功能,在实际应用中需要进行相应的增强。
阅读全文