socket網路程式設計 學習筆記

2021-09-24 21:25:00 字數 2397 閱讀 8866

伺服器端先初始化socket,然後與埠繫結(bind),對埠進行監聽(listen),呼叫accept阻塞,等待客戶端連線。在這時如果有個客戶端初始化乙個socket,然後連線伺服器(connect),如果連線成功,這時客戶端與伺服器端的連線就建立了。客戶端傳送資料請求,伺服器端接收請求並處理請求,然後把回應資料傳送給客戶端,客戶端讀取資料,最後關閉連線,一次互動結束。

#include #include #include #include #include #include #include #include #include #include #include #include #define server_port 6666

/* * 監聽後,一直處於accept阻塞狀態,

* 直到有客戶端連線,

* 當客戶端如數quit後,斷開與客戶端的連線

* */

int main()

bzero(&server_addr, sizeof(server_addr));

//初始化伺服器端的套接字,並用htons和htonl將埠和位址轉成網路位元組序

server_addr.sin_family = af_inet;

server_addr.sin_port = htons(server_port);

//ip可是是本伺服器的ip,也可以用巨集inaddr_any代替,代表0.0.0.0,表明所有位址

server_addr.sin_addr.s_addr = htonl(inaddr_any);

//對於bind,accept之類的函式,裡面套接字引數都是需要強制轉換成(struct sockaddr *)

// bind三個引數:伺服器端的套接字的檔案描述符,

if(bind(serversocket, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)

//設定伺服器上的socket為監聽狀態

if(listen(serversocket,5)<0)

while(1)

printf("等待訊息...\n");

//inet_ntoa ip位址轉換函式,將網路位元組序ip轉換為點分十進位制ip

//表示式:char *inet_ntoa (struct in_addr);

printf("ip is %s\n", inet_ntoa(clientaddr.sin_addr));

printf("port is %d\n", htons(clientaddr.sin_port));

while(1)

buffer[idatanum] = '\0';

if(strcmp(buffer, "quit") == 0)

break;

printf("%s\n", buffer);

printf("傳送訊息:");

scanf("%s", buffer);

printf("\n");

send(client, buffer, strlen(buffer), 0);

if(strcmp(buffer, "quit") == 0)

break;

} }close(serversocket);

return 0;

}

#include #include #include #include #include #include #include #include #include #include #include #include #define server_port 6666

/* * 連線到伺服器後,會不停迴圈,等待輸入,

* 輸入quit後,斷開與伺服器的連線

* */

int main()

serveraddr.sin_family = af_inet;

serveraddr.sin_port = htons(server_port);

//指定伺服器端的ip,本地測試:127.0.0.1

//inet_addr()函式,將點分十進位制ip轉換成網路位元組序ip

serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");

if(connect(clientsocket, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0)

printf("連線到主機...\n");

網路程式設計學習筆記 socket程式設計

本地的程序間通訊 ipc 有很多種方式,總結為4類 在本地可以通過程序pid來唯一標識乙個程序,但是在網路中這是不可以的。tcp ip協議族幫我們解決了這個問題,網路層的 ip位址 可以唯一標識網路中的主機,而傳輸層的 協議 埠 可以唯一標識主機中的應用程式 程序 這樣利用三元組 ip位址 協議 埠...

網路程式設計之SOCKET程式設計學習筆記

使用tcp ip協議的應用程式通常採用應用程式設計介面 unix bsd的套接字 socket 和unix system v的tli 已經被淘汰 來實現網路程序之間的通訊。就目前而言,幾乎所有的應用程式都是採用socket,而現在又是網路時代,網路中程序通訊是無處不在,這就是我為什麼說 一切皆soc...

socket網路程式設計筆記

一 基礎知識 xinetd 開源伺服器,監聽指定埠 1000以上 b s模式 http協議,協議頭 資料 方法get 協議頭部分 可選 connect tyoe 回些客戶端的資料的型別 必須 r n 資料tcp面向連線的通訊協議,只能用於端到端的通訊 通過三次握手建立連線,有反饋udp面向無連線的,...