linux套接字程式設計

2021-05-24 10:34:07 字數 871 閱讀 8543

套接字是用來進行主機間通訊的,linux的socket和windows差不多,雖然有一定的區別,但是其基本原理與結構是一樣的,因此,一台windows的主機可以和一台linux的主機通過套接字進行通訊。socket採用客戶端與伺服器端的模式使兩台主機進行通訊。首先,伺服器端呼叫函式socket新建乙個套接字,該套接字只能由該程序所有。然後伺服器段程序對socket進行命名,本地套接字將被賦予乙個檔名,該檔案通常儲存在/tmp或者/usr/tmp下。對於網路套接字,名字將是乙個與所連線的網路有關的能夠被客戶端連線上的埠號。套接字命名的函式是bind。然後伺服器段呼叫函式listen來等待客戶端的連線,並對進入的連線組成乙個佇列。伺服器端呼叫函式accept接受連線。

當連線被接受後,將新建乙個套接字來進行與該客戶端的通訊,而原來的套接字將保留以供進行和其它客戶端的連線。

客戶端的socket連線更加直接,首先新建乙個未命名的套接字,然後呼叫函式connect來對已經具有命名套接字的伺服器端進行連線。

套接字的性質主要分為三方面:域,型別和協議。

套接字的型別包括:流和資料報。流型別的套接字與檔案流類似,資料以連續的形式在兩個主機之間進行傳送。而資料報型別的套接字則對傳送的資料的大小有限制。

協議則與其所在的域有關。

下面的例子演示了乙個能夠接受多個客戶端的伺服器程式,通過呼叫函式fork在主程序中複製乙個子程序,將與特定客戶端通訊的任務交給子程序,主程序仍然能夠接受新的客戶端的連線:

1.首先引用必要的標頭檔案和定義必要的變數

2.建立客戶端序列,忽略子程序的結束資訊,等待客戶端連線

3.接受連線

4.建立子程序,判斷當前程序是否為子程序

5.如果是子程序,則與客戶端進行通訊

6.否則,該客戶端的工作已經完成,可以關閉與該客戶端的連線

Linux套接字基礎程式設計

所謂套接字,其實就是通訊端點的抽象。而套接字程式設計,就是解決伺服器端跟客戶端之間的通訊問題。先說伺服器端,簡單的概括,分為四步 1.建立套接字 int socket int domain,int type,int protocol socket函式的第1個引數表示的是通訊域,詳情見下表 套接字域描...

套接字程式設計

1 ipv4 通用套接字的位址結構 struct socketaddr2 ipv6 3 值 結果引數 有點迷糊 套接字位址結構大小作為乙個指標傳給核心的原因 當函式被核心呼叫時,大小結構是乙個值 value 告訴核心該結構的大小,核心在寫該結構時不會越界。當函式返回時,結構大小是乙個結果 resul...

套接字程式設計

例1 建立sockaddr in結構體變數,並繫結套接字 建立套接字 int serv sock socket af inet,sock stream,ipproto tcp 建立sockaddr in結構體變數 struct sockaddr in serv addr memset serv ad...