網路程式設計
www.baidu.com 網域名稱(每個網域名稱都有對應的ip) 202.108.22.5
tcp 有連線的,可靠的,一定可以保證訊息可以傳達給對方,有三次握手
udp 沒有連線到 不可靠的 不能保證訊息一定能夠傳達給對方,不存在三次握手
利用套接字進行通訊:
伺服器有兩個套接字
乙個叫監聽套接字
乙個叫通訊套接字
客戶端只有乙個套接字
通訊套接字
伺服器:
bind()繫結ip,埠號(區分程序,電腦裡的哪乙個程序),網域名稱,網路型別
listen()監聽
accept() 建立連線會返回乙個通訊套接字(用於收發)
recv() 引數:通訊套接字
send() 引數:通訊套接字
客戶端:
建立通訊套接字
***ip位址區別網路端 埠號區別服務(程序)
主機是怎麼區分不同的網路服務呢?顯然不能只靠ip位址,因為ip位址與網路服務的關係是一對多,
實際上是通過:ip位址+埠號來區分不同的網路服務
伺服器一般都是通過埠號來識別的。
***點分十進位制——————32位的網路位元組序
規定就是要用32位的網路位元組序
網路型別:ipv4 ipv6
***32位的網路位元組序——點分十進位制
tcp/ip網路通訊協議,是internet最基本的協議,由網路層的ip協議和傳輸層的tcp協議組成。tcp/ip定義了電子裝置如何連入網際網路,以及
資料如何在特們之間傳輸的標準。協議採用了四層的層級結構,每一層都呼叫它的下一層所提供的網路來完成自己的需求。
通俗來說:tcp負責發現傳輸的問題,一有問題就發出訊號,要求重新傳輸,直到所有的資料安全正確的傳輸到目的地。
而ip是給網際網路的每一台電腦規定乙個位址。
網路中傳輸的資料必須按網路位元組序,即大端位元組序。
小端序:儲存資料是先存最低有效位 低序位元組儲存在低位址,inter amd採用的
#include
#include
#include
#include
#include
#include
#include
#include
#define port 6666
#define ip 「127.0.0.1」
int main()
printf(「建立通訊套接字成功\n」);
//2.填充核心結構體
memset(&ser_addr,0,sizeof(ser_addr));
ser_addr.sin_family = af_inet;
ser_addr.sin_port = htons(port);
ser_addr.sin_addr.s_addr = inet_addr(ip);
//3.建立連線
if((connect(ser_fd,(struct sockaddr *)&ser_addr,sizeof(ser_addr))) < 0)
printf(「連線成功\n」);
//4.資料收發
while(1)
//5.關閉套接字
close(ser_fd);
return 0;
}
《網路程式設計》I O 多路復用
在前面的文章中介紹了五種 i o 模型 i o 模型 這裡介紹 i o 模型中 i o 多路復用在 tcp 套接字程式設計中的使用。在 i o 多路復用中主要是 select 和 poll 函式的使用。該函式允許程序指示核心等待多個事件中的任何乙個發生,並只在乙個或多個事件發生或超過指定時間後才被喚...
UNIX網路程式設計 I O多路復用
目錄 unix下可用的5種i o模型 阻塞式i o模型 非阻塞式i o模型 i o復用模型 訊號驅動式i o模型 非同步i o模型 各種i o模型的比較 參考 阻塞式i o 非阻塞式i o i o復用 訊號驅動式i o sigio 非同步i o poxis的aio 系列函式 比如乙個輸入操作通常包含...
併發程式設計 網路IO模型 IO多路復用
網路io模型 一 網路io 輸入 recv recvfrom accept 阻塞io 輸出 send sendto sendall connect 會等待一段時間,但是卻是非阻塞io,因為是乙個主動的過程 二 網路io模型 跟socket有關 blocking io 阻塞io 平時用的 tcp ud...