问题描述
我正在尝试制作一个 Python 套接字客户端/服务器聊天应用程序,但似乎无法解决 this error。我已经使用 netstat -a|findstr 7000
来确保端口可用,and it was. 除了 Windows 安全之外,我没有运行任何防病毒软件。我在关闭计算机上的所有防火墙后也尝试过它 - 没有弄乱路由器中的防火墙设置。我以管理员身份在 Anaconda Powershell Prompt 中运行这两个文件。
任何帮助表示赞赏。
server.py 的代码:
from socket import AF_INET,socket,SOCK_STREAM
import threading
BUFSIZ = 1024
FORMAT = 'utf-8'
SERVER = '192.168.1.10'
ADDR = (SERVER,7000)
server = socket(AF_INET,SOCK_STREAM)
server.bind(ADDR)
sockets = {server}
clients = {}
def accept_incoming_connections():
while True:
client,client_addr = server.accept()
print ("%s:%s has connected." % client_addr)
client.send(bytes("Enter your name and press enter."),FORMAT)
sockets[client] = client_addr
# client_thread = threading.Thread(target=handle_client,args=(client,)).start()
def handle_client(client):
client_name = client.recv(BUFSIZ).decode(FORMAT)
client.send(bytes("Type .exit when you're ready to quit.",FORMAT))
msg = "%s has entered the chat." % client_name
broadcast(bytes(msg,FORMAT))
clients[client] = client_name
while True:
msg = client.recv(BUFSIZ)
if msg == bytes(".exit",FORMAT):
client.send(bytes(".exit",FORMAT))
client.close()
del clients[client]
broadcast(bytes("%s has left the chat." % client_name,FORMAT))
break
else:
broadcast(msg,client_name)
def broadcast(msg,name=""):
for client in clients:
client.send(bytes(name,FORMAT) + msg)
if __name__ == "__main__":
server.listen()
print("Awaiting connection.")
accept_incoming_connections()
client.py 的代码:
import socket
import threading
BUFSIZ = 1024
FORMAT = 'utf-8'
SERVER = '192.168.1.10'
ADDR = (SERVER,7000)
client_sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client_sock.connect(ADDR)
def receive():
msg = client_sock.recv(BUFSIZ).decode(FORMAT)
print(msg)
def send():
msg = input('Enter msg: ')
msg.encode(FORMAT)
client_sock.send(msg)
if msg == ".exit":
client_sock.close()
receive_thread = Thread(target=receive)
receive_thread.start()
编辑:我修好了。对于服务器和客户端,我将 SERVER 设置为 'localhost',将 PORT 设置为 9999。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)