一、介紹
比如2個(gè)安卓手機(jī)需要通訊,就必須獲得對(duì)方的IP地址和端口號(hào)


socket套接字:分為TCP和UDP
TCP:面向連接,可靠,(類似于雙方打電話),適用于數(shù)據(jù)量小而且需要準(zhǔn)確傳輸
UDP:面向報(bào)文,不可靠,(類似于雙方發(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ù)器與客戶端
客戶端獲取服務(wù)器的端口號(hào)和IP地址:


socket的具體工作流程:










atoi()函數(shù)
atoi():int atoi(const char *str );
功能:把字符串轉(zhuǎn)換成整型數(shù)。

實(shí)現(xiàn)例程:
一、linux下客戶端連接服務(wù)器,成功后,主機(jī)(客戶端)telnet遠(yuǎn)程登錄虛擬機(jī)(服務(wù)器):
①:

創(chuàng)建套接字,確定好連接協(xié)議(IPV4),type種類選擇為流式套接字,基于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)聽是否有客戶端連接。
④:

允許客戶端的接入。
最后while(1);等待客戶端的接入。
二、獲取客戶端的IP地址:

在上一個(gè)工程代碼的結(jié)構(gòu)上,增加accept具體監(jiān)聽對(duì)象,以及讀取IP地址。
三、客戶端與服務(wù)器數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn):
客戶端先寫入再讀取:

服務(wù)器端先讀取再寫入:

最后運(yùn)行服務(wù)器與客戶端的代碼會(huì)得到:

四、端口經(jīng)常被占用,做成main函數(shù)傳參配置文件

在上述例子中編寫傳參參數(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é)果:

五、
在上述客戶端與服務(wù)器之間的聊天
審核編輯 黃宇
-
Linux
+關(guān)注
關(guān)注
87文章
11496瀏覽量
213254 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
9753瀏覽量
87574 -
網(wǎng)絡(luò)編程
+關(guān)注
關(guān)注
0文章
72瀏覽量
10593
發(fā)布評(píng)論請(qǐng)先 登錄
手把手教你如何調(diào)優(yōu)Linux網(wǎng)絡(luò)參數(shù)
在Linux中,用新設(shè)置對(duì)CY7C65215重新編程后,如何啟用新設(shè)置?
Linux主要的性能有哪些?

Linux的作用
百問FB網(wǎng)絡(luò)編程 - 網(wǎng)絡(luò)編程簡(jiǎn)介
Python編程:處理網(wǎng)絡(luò)請(qǐng)求的代理技術(shù)
Linux網(wǎng)絡(luò)基礎(chǔ)知識(shí)總結(jié)

Linux應(yīng)用編程的基本概念
Linux開發(fā)怎么學(xué)?
Linux網(wǎng)絡(luò)協(xié)議棧的實(shí)現(xiàn)

linux開發(fā)板與樹莓派的區(qū)別
Linux 驅(qū)動(dòng)開發(fā)與應(yīng)用開發(fā),你知道多少?

在Linux中查看IP地址的方法

評(píng)論