在我尝试掌握Python的网络概念时,我创建了一个简单的服务器客户端程序。服务器创建一个套接字并检查连接,然后向所有连接的实体发送消息。像这样,替代socket.accept()方法
import socket,os
ip=''
port=242
sock = socket.socket()
sock.bind((ip,port))
sock.listen(5)
clients=[]
while True:
clients.append(sock.accept())
os.system('cls')
print 'connected to: '
for client in clients:
print client[1]
message=raw_input('> ')
for client in clients:
try:
client[0].send(message)
except:
clients.remove(client)
程序但似乎停止,直到它接收的连接。如果我想实现聊天的元素,这是有点困难的。我知道我可以将socket.accept()
置于循环之外,但是我打算有多个客户端(因此为.append()
)。 我已经提供了我的客户端代码,以防有任何影响。
import socket
port=int(raw_input('enter the socket adress: '))
sock=socket.socket()
sock.connect(('localhost',port))
connected=True
while connected:
data=sock.recv(1024)
if data=='#exit':
connected=False
else:
print data
请在写回复时考虑到我是一名自学成才的高中新生,对Python的知识有限。 (如果从我的程序的格式不明显...:'[]
注意:我试图避免select()
方法,因为它再次超出了我目前的理解范围。
你说你试图避免选择(),如果你无法围绕这一点,多线程将真正挑战你。如果你想做你想要的定向多重演员,那么你必须是一个或另一个。 – msw