在我嘗試掌握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