一、介紹
比如2個(gè)安卓手機(jī)需要通訊,就必須獲得對(duì)方的IP地址和端口號(hào)
socket套接字:分為T(mén)CP和UDP
TCP:面向連接,可靠,(類(lèi)似于雙方打電話(huà)),適用于數(shù)據(jù)量小而且需要準(zhǔn)確傳輸
UDP:面向報(bào)文,不可靠,(類(lèi)似于雙方發(fā)短信),適用于數(shù)據(jù)量大且不需要準(zhǔn)確傳輸
進(jìn)程間通信是基于Linux內(nèi)核的,不適用于兩臺(tái)手機(jī)之間的通信。
字節(jié)序:
小端:將低序字節(jié)存儲(chǔ)在起始地址
大端:將高序字節(jié)存儲(chǔ)在起始地址
電腦是小端字節(jié)序,網(wǎng)絡(luò)字節(jié)序是大端字節(jié)序。
二、socket服務(wù)器與客戶(hù)端
客戶(hù)端獲取服務(wù)器的端口號(hào)和IP地址:
socket的具體工作流程:
atoi()函數(shù)
atoi():int atoi(const char *str );
功能:把字符串轉(zhuǎn)換成整型數(shù)。
實(shí)現(xiàn)例程:
一、linux下客戶(hù)端連接服務(wù)器,成功后,主機(jī)(客戶(hù)端)telnet遠(yuǎn)程登錄虛擬機(jī)(服務(wù)器):
①:
創(chuàng)建套接字,確定好連接協(xié)議(IPV4),type種類(lèi)選擇為流式套接字,基于TCP協(xié)議。
②:
確定好服務(wù)器的IP地址以及端口號(hào)
其中htons是將端口號(hào)轉(zhuǎn)換成網(wǎng)絡(luò)能識(shí)別的格式;inet_aton是將IP地址轉(zhuǎn)化成網(wǎng)絡(luò)識(shí)別的IP地址。
③:
監(jiān)聽(tīng)是否有客戶(hù)端連接。
④:
允許客戶(hù)端的接入。
最后while(1);等待客戶(hù)端的接入。
二、獲取客戶(hù)端的IP地址:
在上一個(gè)工程代碼的結(jié)構(gòu)上,增加accept具體監(jiān)聽(tīng)對(duì)象,以及讀取IP地址。
三、客戶(hù)端與服務(wù)器數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn):
客戶(hù)端先寫(xiě)入再讀?。?/p>
服務(wù)器端先讀取再寫(xiě)入:
最后運(yùn)行服務(wù)器與客戶(hù)端的代碼會(huì)得到:
四、端口經(jīng)常被占用,做成main函數(shù)傳參配置文件
在上述例子中編寫(xiě)傳參參數(shù):
c_addr.sin_port=htons(atoi(argv[2]));
inet_aton(argv[1],&c_addr.sin_addr);
其中atoi(argv[2])是將字符串轉(zhuǎn)換為整型數(shù)據(jù)。
運(yùn)行結(jié)果:
上:客戶(hù)端 ?下:服務(wù)器
五、
在上述客戶(hù)端與服務(wù)器之間的聊天
審核編輯 黃宇
-
Linux
+關(guān)注
關(guān)注
87文章
11342瀏覽量
210156 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9295瀏覽量
85886 -
網(wǎng)絡(luò)編程
+關(guān)注
關(guān)注
0文章
72瀏覽量
10089
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論