Socket網路程式設計學習筆記(1) 常用方法介紹

2021-04-13 07:09:44 字數 2195 閱讀 9190

雖然天天上欣賞各位「大俠」的傑作,偶然回首,突然發現自己已成「潛水者」久矣。本來對於自己有限的水平,有點不好意思在此發貼,不過潛伏久了,才慢慢意識到老是通過瀏覽他人的文章雖然能夠提高自己能力,能夠及時的獲取新技術新思想,但卻只能停留在他人的思想上。通過學習,加上自己的想法,再寫出來,讓大家來指證錯誤,不僅能夠鞏固自己的知識,也可以讓一些跟我一樣迷惘的朋友們不用再去走一些彎路,豈不是兩全其美,本著這樣的想法,打算把自己平時的所學所想都寫下來,歡迎各路朋友批評指證,因為你的批評和建議能夠讓我更迅速的得到提高。

好了,講了這麼多廢話,也該言歸正傳了。由於工作上需要,最近惡補了一下socket網路程式設計,整理了一下資料,把它放上來,希望能夠對一些朋友有幫助。

在講socket程式設計前,我們先來看一下幾個最常用的類和方法,相信這些東西能讓你事半功倍。

一、ip位址操作類

1、ipaddress類

a、在該類中有乙個 parse()方法,可以把點分的十進位制ip表示轉化成ipaddress類,方法如下:

ipaddress address = ipaddress.parse(「192.168.0.1」);

b、ipaddress提供4個唯讀字段

any  

用於代表本地系統可用的任何

ip位址

broadcase

用於代表本地網路的

ip廣播位址

loopback

用於代表系統的回送位址    

none

用於代表系統上沒有網路介面

其中ipaddress.any最常用可以用來表示本機上所有的ip位址,這對於socket服務進行偵聽時,最方便使用,不用對每個ip進行偵聽了。而ipaddress.broadcase可用來udp的ip廣播,這些具體講socket時再詳細介紹。

2、ipendpoint

類            

我們可以通過二種構造方法來建立ipendpoint類:

a、ipendpoint(long address, int port)

b、ipendpoint(ipaddress address, int port)

四個屬性:

address

addressfamily

port

maxport

minport

這些應該從名字上就很好理解,不再一一介紹。ipendpoint其實就是乙個ip位址和埠的繫結,可以代表乙個服務,用來socket通訊。

二、dns相關類

dns類有四個靜態方法,來獲取主機dns相關資訊,

1、 gethostname() 

通過dns.gethostname()可以獲得本地計算機的主機名

2、gethostbyname()

根據主機名稱,返回乙個iphostentry 物件:

iphostentry gethostbyname(string hostname)

其中 iphostentry

把乙個dns

主機名與乙個別名和

ip位址

addresslist

:乙個ipaddress

物件的陣列

aliases

:乙個字串物件陣列

hostname

:乙個用於主機名的字串物件

3、gethostbyaddress()

類似於gethostbyname(),只不過這裡的引數是ip位址,而不是主機名,也返回乙個iphostentry物件。

iphostentry gethostbyaddress(ipaddress

address)

iphostentry gethostbyaddress(string address)

4、 resolve()

當我們不知道輸入的遠端主機的位址是哪種格式時(主機名或ip位址),用以上的二種方法來實現,我們可能還要通過判斷客戶輸入的格式,才能正確使用,但dns類提供一更簡單的方法resolve(),該方法可以接受或者是主機名格式或者是ip位址格式的任何一種位址,並返回iphostentry物件。

常用方法就寫到這裡了,當然針對網路程式設計不可能只有這麼幾個類和方法,只不過這幾個我們最常用,也非常的簡單。不過因為本人比較懶惰,沒有放一些具體的例項上去,請見諒,:)。如果有興趣的朋友,請接著看「

socket網路程式設計學習筆記(2):面向連線的socket」

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

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

socket網路程式設計 學習筆記

伺服器端先初始化socket,然後與埠繫結 bind 對埠進行監聽 listen 呼叫accept阻塞,等待客戶端連線。在這時如果有個客戶端初始化乙個socket,然後連線伺服器 connect 如果連線成功,這時客戶端與伺服器端的連線就建立了。客戶端傳送資料請求,伺服器端接收請求並處理請求,然後把...

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

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