Python--網路編程-----socket編程樣本--打電話--加上通訊迴圈

來源:互聯網
上載者:User

標籤:顯示   style   python   pos   print   方法   post   關閉   適用於   

一、服務端

 1 import socket 2  3  4 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 5 phone.bind((‘127.0.0.1‘, 8080))  # 0-65535:0-1024給作業系統使用 6 phone.listen(5) 7  8 print(‘starting.....‘) 9 conn, client_addr = phone.accept()10 print(client_addr)11 12 while True:  # 通訊迴圈13     data = conn.recv(1024)14     print(‘用戶端的資料‘, data)15 16     conn.send(data.upper())17 18 conn.close()19 phone.close()

二、用戶端

 1 import socket 2  3  4 # 1、買手機 5 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 6 # print(phone) 7  8 # 2、撥號 9 phone.connect((‘127.0.0.1‘, 8080))10 11 # 3、發、收訊息12 while True:13     msg = input(‘>>:‘).strip()14     phone.send(msg.encode(‘utf-8‘))15     data = phone.recv(1024)16     print(data)17 18 # 4、關閉19 phone.close()

用戶端結果為:

1 >>:he2 b‘HE‘3 >>:asdf4 b‘ASDF‘5 >>:

服務端結果為:

1 starting.....2 (‘127.0.0.1‘, 64037)3 用戶端的資料 b‘he‘4 用戶端的資料 b‘asdf‘

三、有時間運行服務端程式的時候,顯示連接埠佔用錯誤,這時候可以使用如下代碼防止出現這種情況

1 phone.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

四、當用戶端輸入為空白時(也就是直接斷行符號),按斷行符號後,用戶端一直橫在那,

原因分析:

用戶端發送空資訊需要叫用作業系統介面,把用戶端程式記憶體中要發送的資訊拷貝到作業系統記憶體中,如果為空白的話,作業系統記憶體收不到資料,它也就不會發送給服務端,所以出現用戶端橫在那的現象

解決方案:

修改用戶端代碼:

1 while True:2     msg = input(‘>>:‘).strip()3     if not msg:4         continue5     phone.send(msg.encode(‘utf-8‘))6     data = phone.recv(1024)7     print(data)

五、如果用戶端意外中斷連線發生中斷,linux系統中,服務端會發生死迴圈,Windows系統中,服務端會直接報錯

解決方案:

修改服務端代碼:

 1 while True:  # 通訊迴圈 2     try: 3         data = conn.recv(1024) 4         if not data:  # 適用於linux作業系統 5             break 6         print(‘用戶端的資料‘, data) 7      8         conn.send(data.upper()) 9     except ConnectionResetError:  # 適用於windows作業系統10         break

 

Python--網路編程-----socket編程樣本--打電話--加上通訊迴圈

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.