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


socket套接字:分為TCP和UDP
TCP:面向連接,可靠,(類似于雙方打電話),適用于數(shù)據(jù)量小而且需要準(zhǔn)確傳輸
UDP:面向報文,不可靠,(類似于雙方發(fā)短信),適用于數(shù)據(jù)量大且不需要準(zhǔn)確傳輸


進(jìn)程間通信是基于Linux內(nèi)核的,不適用于兩臺手機(jī)之間的通信。
字節(jié)序:
小端:將低序字節(jié)存儲在起始地址
大端:將高序字節(jié)存儲在起始地址


電腦是小端字節(jié)序,網(wǎng)絡(luò)字節(jié)序是大端字節(jié)序。
二、socket服務(wù)器與客戶端
客戶端獲取服務(wù)器的端口號和IP地址:


socket的具體工作流程:










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

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

創(chuàng)建套接字,確定好連接協(xié)議(IPV4),type種類選擇為流式套接字,基于TCP協(xié)議。
②:

確定好服務(wù)器的IP地址以及端口號
其中htons是將端口號轉(zhuǎn)換成網(wǎng)絡(luò)能識別的格式;inet_aton是將IP地址轉(zhuǎn)化成網(wǎng)絡(luò)識別的IP地址。
③:

監(jiān)聽是否有客戶端連接。
④:

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

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

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

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

四、端口經(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)注
88文章
11576瀏覽量
216667 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
10000瀏覽量
90127 -
網(wǎng)絡(luò)編程
+關(guān)注
關(guān)注
0文章
72瀏覽量
10802
發(fā)布評論請先 登錄
Linux網(wǎng)絡(luò)性能調(diào)優(yōu)方案
Linux系統(tǒng)中網(wǎng)絡(luò)配置詳解
Linux網(wǎng)絡(luò)管理的關(guān)鍵技術(shù)和最佳實踐
手把手教你如何調(diào)優(yōu)Linux網(wǎng)絡(luò)參數(shù)
在Linux中,用新設(shè)置對CY7C65215重新編程后,如何啟用新設(shè)置?
Linux常用命令大全
Linux主要的性能有哪些?

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

評論