www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > C語言與CPP編程
[導讀]在掌握了基于TCP的套接字通信流程之后,為了方便使用,提高編碼效率,可以對通信操作進行封裝,本著有淺入深的原則,先基于C語言進行面向過程的函數(shù)封裝,然后再基于C進行面向?qū)ο蟮念惙庋b。1.基于C語言的封裝基于TCP的套接字通信分為兩部分:服務器端通信和客戶端通信。我們只要掌握了通信...

在掌握了基于 TCP 的套接字通信流程之后,為了方便使用,提高編碼效率,可以對通信操作進行封裝,本著有淺入深的原則,先基于 C 語言進行面向過程的函數(shù)封裝,然后再基于 C 進行面向?qū)ο蟮念惙庋b。

1. 基于 C 語言的封裝

基于 TCP 的套接字通信分為兩部分:服務器端通信和客戶端通信。我們只要掌握了通信流程,封裝出對應的功能函數(shù)也就不在話下了,先來回顧一下通信流程:

服務器端

  • 創(chuàng)建用于監(jiān)聽的套接字
  • 將用于監(jiān)聽的套接字和本地的 IP 以及端口進行綁定
  • 啟動監(jiān)聽
  • 等待并接受新的客戶端連接,連接建立得到用于通信的套接字和客戶端的 IP、端口信息
  • 使用得到的通信的套接字和客戶端通信(接收和發(fā)送數(shù)據(jù))
  • 通信結(jié)束,關(guān)閉套接字(監(jiān)聽 通信)

客戶端

  • 創(chuàng)建用于通信的套接字
  • 使用服務器端綁定的 IP 和端口連接服務器
  • 使用通信的套接字和服務器通信(發(fā)送和接收數(shù)據(jù))
  • 通信結(jié)束,關(guān)閉套接字(通信)

1.1 函數(shù)聲明

通過通信流程可以看出服務器和客戶端有些操作步驟是相同的,因此封裝的功能函數(shù)是可以共用的,相關(guān)的通信函數(shù)聲明如下:

///////////////////////////////////////////////////?
////////////////////?服務器?///////////////////////
///////////////////////////////////////////////////
int?bindSocket(int?lfd,?unsigned?short?port);
int?setListen(int?lfd);
int?acceptConn(int?lfd,?struct?sockaddr_in?*addr);

///////////////////////////////////////////////////?
////////////////////?客戶端?///////////////////////
///////////////////////////////////////////////////
int?connectToHost(int?fd,?const?char*?ip,?unsigned?short?port);

///////////////////////////////////////////////////?
/////////////////////?共用?////////////////////////
///////////////////////////////////////////////////
int?createSocket();
int?sendMsg(int?fd,?const?char*?msg);
int?recvMsg(int?fd,?char*?msg,?int?size);
int?closeSocket(int?fd);
int?readn(int?fd,?char*?buf,?int?size);
int?writen(int?fd,?const?char*?msg,?int?size);
關(guān)于函數(shù) readn()writen() 的作用請參考TCP數(shù)據(jù)粘包的處理

1.2 函數(shù)定義

//?創(chuàng)建監(jiān)套接字
int?createSocket()
{
????int?fd?=?socket(AF_INET,?SOCK_STREAM,?0);
????if(fd?==?-1)
????{
????????perror("socket");
????????return?-1;
????}
????printf("套接字創(chuàng)建成功,?fd=%d\n",?fd);
????return?fd;
}

//?綁定本地的IP和端口
int?bindSocket(int?lfd,?unsigned?short?port)
{
????struct?sockaddr_in?saddr;
????saddr.sin_family?=?AF_INET;
????saddr.sin_port?=?htons(port);
????saddr.sin_addr.s_addr?=?INADDR_ANY;??//?0?=?0.0.0.0
????int?ret?=?bind(lfd,?(struct?sockaddr*)
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

當?shù)貢r間 9 月 8 日,SpaceX 與 EchoStar 正式達成一項價值 170 億美元的頻譜交易,SpaceX 將收購 EchoStar 旗下 AWS-4 頻段(2GHz 頻段)及 H 頻段的頻譜許可證,此舉引發(fā)...

關(guān)鍵字: SpaceX EchoStar 星鏈 通信

全球半導體封裝市場正向PLP、ECP等先進技術(shù)傾斜,以應對5G和高性能計算需求。但國內(nèi)上規(guī)模的PLP廠商不超過五家,芯友微憑借技術(shù)創(chuàng)新和成本優(yōu)勢已占據(jù)一席之地。面對行業(yè)競爭和終端需求波動,張博威認為:“機會永遠都在,關(guān)鍵...

關(guān)鍵字: PLP ECP 封裝 芯友微 XINYOUNG

在半導體封裝領(lǐng)域,BGA(球柵陣列)封裝技術(shù)憑借其高引腳密度、低電阻電感和優(yōu)異散熱性能,已成為高性能芯片的主流封裝形式。然而,隨著芯片集成度與功率密度的持續(xù)提升,BGA焊點中的裂紋與微孔缺陷逐漸成為制約產(chǎn)品可靠性的核心問...

關(guān)鍵字: BGA裂紋 半導體 封裝

上海2025年8月20日 /美通社/ -- 今日,全球領(lǐng)先的集成電路成品制造和技術(shù)服務提供商長電科技(600584.SH)公布了2025年半年度報告。財報顯示,今年上半年長電...

關(guān)鍵字: 封裝 長電科技 系統(tǒng)集成 汽車電子

在現(xiàn)代工業(yè)和汽車領(lǐng)域,控制器局域網(wǎng)(CAN)總線作為一種可靠且高效的通信方式,廣泛應用于各種電子設備之間的數(shù)據(jù)傳輸。在 CAN 總線系統(tǒng)中,有一個看似毫不起眼卻至關(guān)重要的元件 ——120Ω 終端電阻。這個小小的電阻,對于...

關(guān)鍵字: 控制器局域網(wǎng) 總線 通信

8月14日消息,今天,國務院新聞辦公室舉行“高質(zhì)量完成‘十四五’規(guī)劃”系列主題新聞發(fā)布會,國家數(shù)據(jù)局介紹“十四五”時期數(shù)字中國建設發(fā)展成就。

關(guān)鍵字: 算力 通信

北京2025年8月8日 /美通社/ -- 8月7日,浪潮信息發(fā)布面向萬億參數(shù)大模型的超節(jié)點AI服務器"元腦SD200"。該產(chǎn)品基于浪潮信息創(chuàng)新研發(fā)的多主機低延遲內(nèi)存語義通信架構(gòu),以開放系統(tǒng)設計向上擴展...

關(guān)鍵字: 模型 節(jié)點 SD 通信

在現(xiàn)代通信技術(shù)的復雜網(wǎng)絡中,射頻(RF)濾波器猶如一位幕后英雄,雖鮮少被大眾提及,卻發(fā)揮著舉足輕重的作用。從我們?nèi)粘J褂玫闹悄苁謾C,到構(gòu)建通信基礎設施的基站,再到新興的物聯(lián)網(wǎng)設備,RF 濾波器無處不在,默默保障著信號的順...

關(guān)鍵字: 射頻 濾波器 通信

在當今數(shù)字化時代,5G 通信技術(shù)以前所未有的速度改變著我們的生活,從高速的數(shù)據(jù)傳輸?shù)綄崟r的物聯(lián)網(wǎng)應用,5G 的影響力無處不在。然而,在這一系列令人矚目的技術(shù)背后,有一個常常被忽視卻至關(guān)重要的角色 —— 晶振。它如同幕后的...

關(guān)鍵字: 通信 數(shù)據(jù)傳輸 晶振
關(guān)閉