linux unix網路程式設計 入門基礎

2021-10-03 16:57:10 字數 2605 閱讀 8081

在網路中用來描述計算機中不同程式與其他電腦程式通訊的方式。為了區分不同應用程式的程序和連線,需要使用應用程式與tcp/ip協議互動的套接字埠。

主要用到三個引數:通訊的目的ip位址、使用的傳輸協議(tcp或udp)和使用的埠號。

1.套接字相關的資料型別

套接字程式設計是,通常使用sockaddr和sockaddr_in這兩個系統中定義的資料型別結構體。

struct sockaddr

sockaddr_in的功能和sockaddr相同,不同的是ip位址和埠分開為不同的成員。

struct sockaddr_in

in_addr也是個結構體,作用是用來儲存ip位址。

struct in_addr

2.套接字型別

套接字型別指的是在網路通訊中不同的資料傳輸方式:

1. 使用網域名稱獲得主機的ip位址

struct hostent *gethostbyname(const char *name);
struct hostent

例項:

#include

#include

#include

#include

#include

intmain()

else

printf

("-------------------------------\n");

if((host =

gethostbyname

(hostname2))!=

null

)else

return0;

}/*輸出結果

domain name:www.163.com

ip length : 4

type : 2

ip : 228.154.106.0

-------------------------------

domain name: www.sjaife.com

error: 1

operation not permitted

*/

2.用ip位址返回網域名稱

用ip位址可以查詢到這個ip對於的網域名稱,需要使用的是gethostbyaddr()函式;

struct hostent *gethostbyaddr(const void *addr,socklet_t,int type);

type:一般值為af_inet

例項:

#include

#include

#include

#include

#include

intmain()

else

return0;

}

1.將網路位址轉換成長整型數
long inet_addr(char *cp);
例項:

#include

#include

#include

#include

intmain()

輸出結果為:16885952

2.將長整型ip位址轉換為網路位址

inet_ntoa()可以將乙個ip型別的結構體轉換成點分十進位制的網路ip位址。

char

*inet_ntoa

(struct in_addr in)

;

例項:

#include

#include

#include

#include

intmain()

輸出結果:192.168

.1.1

在網路程式中,可以使用下面的語句來捕獲發生錯誤的編號。

extern

int h_error;

捕獲這個錯誤編號後,可以用hstrerror()函式輸出這個錯誤資訊:

char

*hstrerror

(int err)

;

例項:

#include

#include

intmain()

}輸出結果:

0: resolver error 0

(no error)

1: unknown host

2: host name lookup failure

3: unknown server error

4: no address associated with name

5: unknown resolver error

Linux UNIX網路程式設計

本書詳細介紹了在unix linux系統下基於tcp ip網路套介面的基本程式設計方法,包括迭代與併發伺服器編寫方法 程序與執行緒程式設計技術 i o程式設計技術 ipv4與ipv6的相容性 原始套介面 資料鏈路訪問技術 廣播與多播技術等。為滿足教學實際需要,在本書最後一章給出了socket基本程式...

Linux UNIX網路程式設計筆記(四) UDP程式設計

udp客戶 伺服器的套接字函式 recvfrom 函式 接收資料,類似標準read include include ssize t recvfrom int sockfd,void buf,size t len,int flags,struct sockaddr from,size t addrle...

網路程式設計入門

網路程式設計本質上要做的事情就是交流,我們先來分析一下人與人交流,見上圖,我們發現人與人的通訊是分層結構的,這裡以乙個人對另乙個人說 hello world!為例。1 乙個人說了 hello world!後它就是乙個資訊,這個是資訊首先可以直接說出來,我們也可以使用暗號來代替。這就是說資訊可以選擇明...