一、介紹
socket套接字:分為TCP和UDP
TCP:面向連接,可靠,(類似于雙方打電話),適用于數據量小而且需要準確傳輸
UDP:面向報文,不可靠,(類似于雙方發短信),適用于數據量大且不需要準確傳輸
進程間通信是基于Linux內核的,不適用于兩臺手機之間的通信。
字節序:
小端:將低序字節存儲在起始地址
大端:將高序字節存儲在起始地址
二、socket服務器與客戶端
客戶端獲取服務器的端口號和IP地址:
socket的具體工作流程:
atoi()函數
atoi():int atoi(const char *str );
功能:把字符串轉換成整型數。
實現例程:
一、linux下客戶端連接服務器,成功后,主機(客戶端)telnet遠程登錄虛擬機(服務器):
①:
創建套接字,確定好連接協議(IPV4),type種類選擇為流式套接字,基于TCP協議。
②:
確定好服務器的IP地址以及端口號
其中htons是將端口號轉換成網絡能識別的格式;inet_aton是將IP地址轉化成網絡識別的IP地址。
③:
監聽是否有客戶端連接。
④:
允許客戶端的接入。
最后while(1);等待客戶端的接入。
二、獲取客戶端的IP地址:
在上一個工程代碼的結構上,增加accept具體監聽對象,以及讀取IP地址。
三、客戶端與服務器數據傳輸的實現:
客戶端先寫入再讀取:
服務器端先讀取再寫入:
最后運行服務器與客戶端的代碼會得到:
四、端口經常被占用,做成main函數傳參配置文件
在上述例子中編寫傳參參數:
c_addr.sin_port=htons(atoi(argv[2]));
inet_aton(argv[1],&c_addr.sin_addr);
其中atoi(argv[2])是將字符串轉換為整型數據。
運行結果:
上:客戶端 ?下:服務器
五、
在上述客戶端與服務器之間的聊天
審核編輯 黃宇
-
Linux
+關注
關注
87文章
11229瀏覽量
208927 -
服務器
+關注
關注
12文章
9021瀏覽量
85184 -
網絡編程
+關注
關注
0文章
71瀏覽量
10067
發布評論請先 登錄
相關推薦
評論