30.2. 企業級開發進階2.2:TCP實戰
1. 簡易對講程式的需求
對講機程式,就是雙方互相通話的過程,簡單一點的邏輯就是雙方每次只能說一句話,然後等待對方回答之後繼續說話。
2. 程式設計實現服務端
```
import socket
# 建立服務端套接字物件
service = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 繫結主機和埠號
service.bind(("", 8888))
# 啟動監聽
service.listen(1)
# 接收客戶端連線
print("服務端程式啟動成功,等待客戶端接入.....")
conn, addr = service.accept()
print("客戶端已經接入,可以進行通訊" + str(addr) + ";等待客戶端傳送訊息...")
# 傳送歡迎訊息
conn.sendall("天王蓋地虎,寶塔鎮河妖".encode("utf-8"))
# 迴圈讀取訊息
while True:
# 接收並列印客戶端傳送訊息
msg = conn.recv(1024)
msg = msg.decode("utf-8")
print("客戶端:" + msg)
# 如果客戶端傳送bye字串,跳出迴圈
if msg == "bye":
service.sendall("over!")
break;
# 向客戶端傳送訊息
info = input("請輸入要傳送給客戶端的訊息:")
info = info.encode("utf-8")
conn.sendall(info)
# 關閉該客戶端的連線
conn.close()
```
3. 程式設計實現客戶端
```
import socket
# 建立客戶端套接字物件
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 連線伺服器
client.connect(("192.168.10.115", 8888))
# 迴圈處理髮送訊息
while True:
# 接收伺服器的訊息
msg = client.recv(1024)
msg = msg.decode("utf-8")
print("伺服器:" + msg)
# 如果一旦接收到over!字串,跳出迴圈
if msg=="over!":
print("程式退出")
break;
# 給伺服器傳送訊息
info = input("請輸入要傳送的訊息:")
info = info.encode("utf-8")
client.sendall(info)
#關閉客戶端套接字物件
client.close()
```
4. 測試程式
首先執行服務端程式
執行客戶端程式
開始互相傳送訊息 服務端
客戶端
整體效果如上所述,對於TCP網路程式設計的部分內容都有涉及,大家在獨立完成的基礎上,可以思考一個問題:怎麼退出對話?!
相關文章
- 企業級 Web 開發的挑戰Web
- 《SpringBoot實戰開發》——基於Gradle+Kotlin的企業級應用開發最佳實踐Spring BootGradleKotlin
- Hyperf 2.2 版釋出!| 企業級的漸進式 PHP 協程框架PHP框架
- Angular實戰之使用NG-ZORRO建立一個企業級中後臺框架(進階篇)Angular框架
- APICloud開發者進階之路 | 超級實用技巧APICloud
- MySQL 進階實戰MySql
- 企業級開發框架----------Django框架Django
- OpenAI Assistants API 企業級應用實戰OpenAIAPI
- SpringCloud微服務實戰——搭建企業級開發框架(十二):OpenFeign+Ribbon實現負載均衡SpringGCCloud微服務框架負載
- SpringCloud微服務實戰——搭建企業級開發框架(十):使用Nacos分散式配置中心SpringGCCloud微服務框架分散式
- HR系統助力企業實現管理進階
- 《Java Web開發實戰》Java工程師推薦的進階之路JavaWeb工程師
- SpringCloud微服務實戰——搭建企業級開發框架(九):使用Nacos發現、配置和管理微服務SpringGCCloud微服務框架
- Zabbix 4.0企業級分散式監控實戰分散式
- 體驗iptables 企業級的防火牆實戰防火牆
- 企業級大資料中臺架構實戰大資料架構
- 企業級微信小程式實戰詳解微信小程式
- WinForm企業級框架實戰專案演練ORM框架
- SpringCloud微服務實戰——搭建企業級開發框架(十五):整合Sentinel高可用流量管理框架【熔斷降級】SpringGCCloud微服務框架
- 前端開發入門到實戰:HTML5進階FileReader的使用前端HTML
- Laravel 我的教程筆記: Web 開發實戰進階 建立專案Laravel筆記Web
- SpringCloud微服務實戰——搭建企業級開發框架(十四):整合Sentinel高可用流量管理框架【限流】SpringGCCloud微服務框架
- SpringCloud微服務實戰——搭建企業級開發框架(十一):整合OpenFeign用於微服務間呼叫SpringGCCloud微服務框架
- 加入雲原生實戰營(星球),帶你進階 Go + 雲原生高階開發工程師Go工程師
- Spark+ClickHouse企業級資料倉儲實戰Spark
- 企業級大資料中臺架構實戰【3】大資料架構
- 企業級大資料中臺架構實戰【1】大資料架構
- ASP.NET Core 6 從入門到企業級實戰開發應用技術彙總ASP.NET
- 京東NLP企業級專案實戰訓練營
- Java從零到企業級電商專案實戰Java
- SpringCloud微服務實戰——搭建企業級開發框架(三十七):微服務日誌系統設計與實現SpringGCCloud微服務框架
- SpringCloud微服務實戰——搭建企業級開發框架(三十):整合EasyExcel實現資料表格匯入匯出功能SpringGCCloud微服務框架Excel
- SpringCloud微服務實戰——搭建企業級開發框架(十九):Gateway使用knife4j聚合微服務文件SpringGCCloud微服務框架Gateway
- Linux 企業實戰篇Linux
- Docker、Jenkins企業實戰DockerJenkins
- SpringCloud微服務實戰——搭建企業級開發框架(四十九):資料字典註解的設計與實現SpringGCCloud微服務框架
- 微服務PaaS框架,RestCloud企業級開發框架微服務框架RESTCloud
- 【iOS開發進階】-RunTimeiOS
- Web 開發進階指南Web