相信大家都知道,socket作为传输协议十分的常用,在代码中经常需要多端通信,那socket的使用就十分的重要.
代码请翻到最后
服务端
服务端是重要的socket组成
服务器端口与ip
import socket
import os
import threading
host = '0.0.0.0'
port = 8866
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((host, port))
server_socket.listen()
端口与ip是socket连接的必要参数。
在服务端,ip是接受方式,比如127.0.0.1,就是仅仅接受自己本身带来的访问,在http协议中一样通用,而想要别人都能够访问,那就需要把ip改为0.0.0.0,以此来接受所有的访问
port端口就是指你想要在哪里公开你的信息,建议选择3000以上,10000以下的端口,防止与电脑自带服务冲突
请注意,不要试图关闭任何一个端口来打开你喜欢的端口,这会很恐怖!!!!
服务器数据保存
data = client_socket.recv(1024).decode()
if not data:
print(f'客户端 {client_address} 断开连接')
client_sockets.remove(client_socket)
client_socket.close()
break
print(f'接收到来自客户端 {client_address} 的数据:', data)
with open(os.path.join('log', f'{client_address}.txt'), 'a') as file:
file.write(data + '\n')
服务器接受到数据后一般会保存到一个文件中,而保存的常用方式是log文件,但是这里为了方便,创建了log文件夹,把各个ip的txt文件保存在下面
服务器实现多个socket连接
while True:
client_socket, client_address = server_socket.accept()
print(f'与客户端 {client_address} 连接成功')
client_sockets.append(client_socket)
threading.Thread(target=handle_client, args=(client_socket, client_address)).start()
服务器想要有多个socket客户端链接上来,就需要使用thread来为每个访问的客户创建线程以实现多个访问同时进行
客户端
客户端实现连接与发送
不建议实践,在此放上github地址,下载后双击exe,输入ip和port就可以连接上socket服务器,并且实现模拟访问
点击上面的文字前往下载
点击上面的文字前往下载
加群参与游戏开发与讨论 (二维码在我之后的blog)