1. 程式人生 > >day08-socket簡單編程

day08-socket簡單編程

127.0.0.1 類型 死循環 再次 msg int 聲明 div while

#客戶端
import socket
client = socket.socket() #聲明socket類型,同時生成socket連接對象
client.connect((localhost,6969))
while True:
    msg = input(">>:").strip()
    if len(msg) == 0:continue
    client.send(msg.encode("utf-8"))#只能發送字節類型數據
    data = client.recv(1024)
    print("recv:",data.decode())
client.close()
#-*-coding:utf-8-*-
#服務器端
import socket
server = socket.socket()
server.bind((localhost,6969)) #綁定要監聽端口
server.listen(5) #監聽
print("我要開始等電話了")
while True:#第一層
    conn, addr = server.accept()  # 等電話打進來
    # conn就是客戶端連過來而在服務器端為其生成的一個連接實例在此處阻塞,一直到客戶端鏈接進來
    print(conn, addr)
    print("電話來了")
    count 
= 0 while True:#不停循環收取消息 data = conn.recv(1024) print("recv:",data) if not data:#如果不判斷,客戶端斷開你,會不停接受空數據,發生死循環 print("client has lost...") break#這裏斷開就會再次回到第一次層,服務端還可以為下一個客戶端服務,不能斷,實現多用戶連接 conn.send(data.upper()) count+=1 if count >10:break
server.close()

此時服務器端依然只能同時為一個客戶服務,其客戶來了,排隊需要連接掛起,否則報告

輸出:

我要開始等電話了
<socket.socket fd=300, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=(‘127.0.0.1‘, 6969), raddr=(‘127.0.0.1‘, 53167)> (‘127.0.0.1‘, 53167)
電話來了
recv: b‘12‘

輸入:

>>:12
recv: 12
>>:

day08-socket簡單編程