目錄python
@網絡
服務端程序(server.py):socket
import socket # 建立服務端socket對象 server = socket.socket() # 綁定IP(ipocnfig命令查看ip地址)和端口(自定義網絡端口,不和系統已有端口衝突就能夠使用) server.bind(('192.168.5.106', 8000)) # 能夠等待5個鏈接 server.listen(5) # 等待客戶端鏈接,若是沒有鏈接,則持序等待 # conn:客戶端與服務端鏈接的對象,服務端經過該對象進行收發數據 # addr:客戶端地址信息 print('服務端已經運行,等待客戶端鏈接……') conn, addr = server.accept() # 在這裏會阻塞,只有客戶端進行鏈接,才獲取客戶端鏈接而後開始進行通行 print('有人來鏈接了!') data = conn.recv(1024) # 1024:服務端獲取數據一次最多獲取1024byte print('客戶端給我發了:', data) conn.send(b'May I help you?') conn.close() # 與客戶端斷開鏈接 server.close() # 關閉服務端的服務
客戶端程序(client.py):工具
import socket # 建立客戶端socket對象 client = socket.socket() client.connect(('192.168.5.106', 8000)) # 阻塞,只有鏈接成功,代碼纔會繼續執行 client.send(b'hello') # 鏈接服務端後給服務端發送消息 data = client.recv(1024) # 等待服務端發送的消息 print('服務端給我回復了:',data) client.close() # 關閉鏈接
服務端運行:code
服務端已經運行,等待客戶端鏈接……
有人來鏈接了!
客戶端給我發了: b'hello'server
客戶端運行:對象
服務端給我回復了: b'May I help you?'ip
服務端(server.py):utf-8
import socket # 建立服務端socket對象 server = socket.socket() # 綁定IP和端口 server.bind(('192.168.5.106', 8000)) # 能夠等待5個鏈接 server.listen(5) # 等待客戶端鏈接,若是沒有鏈接,則持序等待 # conn:客戶端與服務端鏈接的對象,服務端經過該對象進行收發數據 # addr:客戶端地址信息 while True: print('服務端已經運行,等待客戶端鏈接……') conn, addr = server.accept() # 在這裏會阻塞,只有客戶端進行鏈接,才獲取客戶端鏈接而後開始進行通行 print('有人來鏈接了!') data = conn.recv(1024) # 字節類型 resp = data + ',你好!'.encode('utf-8') print('已發送「', resp.decode('utf-8'), '」給客戶端……') conn.send(resp) # 字節類型 conn.close() print('服務端斷開鏈接……', '\n')
客戶端程序(client.py):字符串
import socket # 建立客戶端socket對象 client = socket.socket() client.connect(('192.168.5.106', 8000)) # 阻塞,只有鏈接成功,代碼纔會繼續執行 name = input('輸入你的姓名吧:') client.send(name.encode('utf-8')) # 將字符串轉換爲字節,鏈接服務端後給服務端發送這個字節 resp = client.recv(1024) # 阻塞,等待服務端發送的消息 print(resp.decode('utf-8')) client.close() # 關閉鏈接
服務端運行記錄:
服務端已經運行,等待客戶端鏈接……
有人來鏈接了!
已發送「 Thanlon,你好! 」給客戶端……
服務端斷開鏈接……
服務端已經運行,等待客戶端鏈接……
有人來鏈接了!
已發送「 Kiku,你好! 」給客戶端……
服務端斷開鏈接……
服務端已經運行,等待客戶端鏈接……
客戶端1運行記錄:
輸入你的姓名吧:Thanlon
Thanlon,你好!
客戶端1運行:
客戶端2運行記錄:
輸入你的姓名吧:Kiku
Kiku,你好!
服務端程序(server.py):
import socket # 建立服務端socket對象 server = socket.socket() # 綁定IP和端口 server.bind(('192.168.5.106', 8000)) # 能夠等待5個鏈接 server.listen(5) # 等待客戶端鏈接,若是沒有鏈接,則持序等待 # conn:客戶端與服務端鏈接的對象,服務端經過該對象進行收發數據 # addr:客戶端地址信息 while True: print('\n系統提示:服務端已經運行,等待客戶端鏈接……') conn, addr = server.accept() # 在這裏會阻塞,只有客戶端進行鏈接,才獲取客戶端鏈接而後開始進行通行 print('系統提示:' + str(list(addr)) + '客戶端已鏈接本服務端……\n') while True: data = conn.recv(1024) # 字節類型 if data == b'0': break print('系統提示:已接收客戶端發來的信息:「' + data.decode('utf-8') + '」') resp = data + ',你好!'.encode('utf-8') print('系統提示:已發送「', resp.decode('utf-8'), '」給客戶端……') conn.send(resp) # 字節類型 print('系統提示:與' + str(list(addr)) + '客戶端的鏈接未關閉,可繼續和該客戶端進行對話……') conn.close() print('系統提示:與' + str(list(addr)) + '客戶端的鏈接已關閉……')
客戶端程序(client.py):
import socket # 建立客戶端socket對象 client = socket.socket() client.connect(('192.168.5.106', 8000)) # 阻塞,只有鏈接成功,代碼纔會繼續執行 while True: name = input('系統提示,請輸入您的姓名(輸入0關閉鏈接):\n') client.send(name.encode('utf-8')) # 將字符串轉換爲字節,鏈接服務端後給服務端發送這個字節 if name == '0': break resp = client.recv(1024) # 阻塞,等待服務端發送的消息 print('系統提示:客戶端回覆「' + resp.decode('utf-8') + '」') client.close() # 關閉鏈接 print('系統提示:關閉客戶端鏈接!')
服務端運行記錄:
系統提示:服務端已經運行,等待客戶端鏈接……
系統提示:['192.168.5.106', 57892]客戶端已鏈接本服務端……
系統提示:已接收客戶端發來的信息:「Thnlon」
系統提示:已發送「 Thnlon,你好! 」給客戶端……
系統提示:與['192.168.5.106', 57892]客戶端的鏈接未關閉,可繼續和該客戶端進行對話……
系統提示:已接收客戶端發來的信息:「Kiku」
系統提示:已發送「 Kiku,你好! 」給客戶端……
系統提示:與['192.168.5.106', 57892]客戶端的鏈接未關閉,可繼續和該客戶端進行對話……
系統提示:與['192.168.5.106', 57892]客戶端的鏈接已關閉……
系統提示:服務端已經運行,等待客戶端鏈接……
系統提示:['192.168.5.106', 57939]客戶端已鏈接本服務端……
系統提示:已接收客戶端發來的信息:「Maria」
系統提示:已發送「 Maria,你好! 」給客戶端……
系統提示:與['192.168.5.106', 57939]客戶端的鏈接未關閉,可繼續和該客戶端進行對話……
系統提示:與['192.168.5.106', 57939]客戶端的鏈接已關閉……
系統提示:服務端已經運行,等待客戶端鏈接……
客戶1端運行記錄:
系統提示,請輸入您的姓名(輸入0關閉鏈接):
Thnlon
系統提示:客戶端回覆「Thnlon,你好!」
系統提示,請輸入您的姓名(輸入0關閉鏈接):
Kiku
系統提示:客戶端回覆「Kiku,你好!」
系統提示,請輸入您的姓名(輸入0關閉鏈接):
0
系統提示:關閉客戶端鏈接!
客戶2端運行記錄:
系統提示,請輸入您的姓名(輸入0關閉鏈接):
Maria
系統提示:客戶端回覆「Maria,你好!」
系統提示,請輸入您的姓名(輸入0關閉鏈接):
0
系統提示:關閉客戶端鏈接!
固然能夠有任意多的客戶端……