linux下建立伺服器與客戶端

2021-08-11 14:42:05 字數 1907 閱讀 4927

在此主要記錄一下現在所學習linux網路程式設計的內容,主要包括linux下網路程式設計建立客戶端與伺服器:

首先,建立伺服器,主要分為4步:

第一步:開啟socket檔案描述符。

int socket(int domain, int type, int protocol);socket函式中主要包含的3個引數:domain是我們所要選取的ip協議(主要有ipv4和ipv6,ipv4較早使用,ipv6目前使用),目前還有好多在使用ipv4,因此這裡選用ipv4;type是選用tcp協議(傳輸較為穩定)或udp協議(傳輸不穩定,但傳輸速度較快);第三個引數不太清楚含義,一般選擇0,預設處理。

socket函式的返回值就是類似於之前所學習的檔案描述符。

int bind(int socket, const struct sockaddr *address,socklen_t address_len);bind的函式主要包含3個引數,第乙個引數是類似於檔案描述符sockfd(即socket函式的返回值),第二個引數是乙個結構體,主要包含設定的埠號(一台pc電腦有多個軟體,乙個軟體就配置乙個埠,便於區分)、伺服器ip位址(通過ifconfig來獲取)、所選取的ip協議(ipv4或者ipv6);注意:我們所看到的伺服器ip位址是點十進位制的形式,要通過inet_addr()函式或者inet_pton()函式轉化為電腦所能識別的十六進製制形式。第三個引數是結構體的大小,主要是因為不知道是ipv4還是ipv6,所以通過獲取該結構體大小來確定所選取的ip協議。

第三步:建立監聽視窗;//類似於監聽有哪些裝置連線到了伺服器

int listen(int socket, int backlog);listen函式相對簡單,主要包含了2個引數。第乙個引數是socket函式的返回值;第二個引數是設定的所允許連線伺服器客戶端口的數量(個人理解是這樣)。

第四步:建立接收等待事件;//等待客戶端口來連線

int accept(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len);accept函式主要包含三個引數:第乙個引數是socket函式的返回值;第二個引數也是第二步所設定的結構體;第三個引數同樣是結構體的大小。

至此,我們的伺服器就建立成功了,接下來建立客戶端,主要分為兩步。

第一步:開啟socket檔案描述符。//同建立伺服器的做法相同

第二步:通過connet連線伺服器。

int connect(int socket, const struct sockaddr *address, socklen_t address_len);connect函式主要包含了3個引數,與建立伺服器時所使用的bind函式類似,這裡不多太多介紹。

至此,我們的客戶端口也建立成功,現在客戶端就可以與伺服器相連了;

附錄**:

/*建立伺服器*/

#include

#include

#include

#include

#include

using namespace std;

#define serveraddr "192.168.237.129"

#define myport 6003

#define backlog 100

int main();

struct sockaddr_in cliaddr=;

//第一步:開啟socket檔案描述符

sockfd=socket(af_inet,sock_stream,0);

if(sockfd<0);

struct sockaddr_in cliaddr=;

//第一步:開啟socket檔案描述符

sockfd=socket(af_inet,sock_stream,0);

if(sockfd<0){

cout<<"socket error!"<

伺服器與客戶端

建立socket操作,建立流式套接字,返回套接字型大小socksrv socket socket int af,int type,int protocol 第乙個引數,指定位址簇 tcp ip只能是af inet,也可寫成pf inet socket socksrv socket af inet,s...

客戶端與伺服器

cs與bs 軟體使用方式上的兩種劃分 c s client server pc客戶端與伺服器架構 特點 在伺服器當中就主要是乙個資料庫,把所有業務邏輯都交給客戶端來完成 優點 較為安全,使用者介面豐富,客戶體驗好 缺點 每次公升級都要重新安裝,針對不同的作業系統開發,可移植性差 b sbrowser...

Linux下Socket伺服器與客戶端程式設計

對於socket程式設計零基礎,同時也沒有在linux下程式設計的經驗,分享給和我一樣的朋友。伺服器接收客戶端多次傳過來訊息,同時返回給客戶端進行迴圈處理。伺服器得起乙個執行緒,處理客戶端傳過來的訊息,否則伺服器與客戶端只能通訊一次。客戶端 code include include include ...