C 網路程式設計 01

2022-03-03 16:38:28 字數 3664 閱讀 9046

趁著計算機網路這門課布置了課程設計,學習下網路程式設計。

系統:ubuntu 14.01...

1. 關於socket(套接字)

1.1套接字是存在於運輸層和應用層間的抽象層,通過它來區分不同應用程式程序間的網路通訊和連線。

1.2套接字的通訊流程:

1.3socket()函式:

int socket(int domain, int type, int protocol);
其中:type 如下:

protocol 指定實際使用的傳輸協議。 如果該項為「0」的話,即根據選定的domain和type選擇使用預設協議。(目前也只遇到了0)

connection()函式:

int connect(int sockfd, const

struct sockaddr *serv_addr, socklen_t addrlen);

當返回值為-1,表示出錯;返回0表示連線成功。

先編寫客戶端程式client.cpp,建立乙個套接字:

#include#include

using

namespace

std;

intmain()

return0;

}

1.4接下來將這個套接字連線到server上,需要ip位址和埠號

使用sockaddr_in對需要連線到的伺服器進行設定,sockaddr_in和sockaddr結構:

//

ipv4 af_inet sockets:

struct

sockaddr_in ;

struct

in_addr ;

struct

sockaddr ;

嘗試連線到baidu.com的伺服器,ip:14.215.177.37,ip位址是256進製的4位元組資料,如14.215.177.37(baidu.com),用inet_addr函式將它轉化成長整數型別:

server.sin_addr.s_addr = inet_addr("14.215.177.37");
向上述**新增sockaddr_in結構體物件server:

#include#include

#include

using

namespace

std;

intmain()

server.sin_addr.s_addr = inet_addr("

14.215.177.37");

server.sin_family =af_inet;

server.sin_port = htons(80

);

//connect to remote server

if(connect(socket_desc, (struct sockaddr*)&server, sizeof(server))<0

)

cout

<

connected

")<

return0;

}

如果無誤,執行後控制台會顯示"connected",連線成功

tips:connections are present only in tcp sockets

1.5用send()函式實現通過socket傳送資料

send()函式:

int send(int socket, const

void * buff, int length, int flags);

recv()函式:

int recv(int socket, void *buff, int length, int flags);
向baidu的伺服器傳送請求並獲取回覆:

其中 "get / http/1.1" 是http請求...具體什麼意思暫時並不明白,但可以驗證傳送成功

返回如下資訊:

最後關閉socket,用unistd.h中的close()函式:

close(socket_desc);

1.7以上完成了三個基本操作:

建立套接字

建立與伺服器的連線

傳送和接收資訊

網路程式設計 01

一 tcp ip 1 tcp ip協議的理解 網路傳輸協議 tcp 基於位元組流的傳輸層 通訊協議,主要用於發現傳輸中的錯誤,要去重新發 ip 網路層協議。2 名詞的理解 ip 網路層的唯一識別id。tcp 面向連線層的協議,需要三次握手才能建立通訊。分別是 客戶端 向伺服器傳送 同步訊號,即告訴伺...

網路程式設計 01

網路程式設計 網路目的 資料的傳輸 網路資料傳輸是乙個複雜的過程 iso 國際標準化組織 osi 七層模型 網路通訊標準化流程 應用層 提供使用者服務,具體內容由特定程式規定 表示層 資料的壓縮優化 會話層 建立應用連線,選擇傳輸層服務 傳輸層 提供不同的傳輸服務,流量控制 網路層 路由選擇,網路互...

網路程式設計01

軟體架構的兩種方式 c s架構 client 客戶端 基於網路 server 服務端 b s架構 browser 客戶端 基於網路 server 服務端 ps 1.服務端和客戶端都必須有唯一的位址,但是服務端的位址必須是繫結的 2.服務端必須要24小時對外提供服務 3.服務端要能支援併發 網路程式設...