Socket

網路導論 TCP & UDP Sever端 Socket Client端 執行緒Tread

   

首頁
前言
網路導論
Linux 視窗程式
整合成果展示
心得與感想       

 

 


                                                                                    Socket

  通訊端(Socket)

  通訊端是一種通訊機制,它讓client/server系統可以用在單一電腦,或是在網路進行

  開發,通訊端的建立方式與管道不同,它將client與server分得很清楚,通訊的機

  制可以在用在單一或多重client之上

 

  Socket建立

  Socket系統建立一通訊端與傳回一descriptor以便用來存取通訊端

  int socket(int domain,int type,int protocol);

  建立一通訊通道的端點參數domain指定協議 群組,type參數指定通訊的型態特色,

  可能的值包括 SOCK_STREAM 與 SOCK_DGRAM前者 是一種可排序,以連結為基礎,雙

  向可靠資料流,為TCP連結所提供。後者傳送過程並不保證訊息一定抵達,亦不會

  將資料重排,此種通訊 由UDP連結所提供

 

  通訊端位址

  每個通訊端網址都需要有自己的位址格式,對AF_INET來說,位址係以sockaddr_in所

  指定者,定義在<netinet/in.h>中

struct sockaddr_in address;                  

   address.sin_family = AF_INET;              / * sin_family */

   address.sin_addr.s_addr = inet_addr(argv);      / * Internet address */

   address.sin_port = htons(9911);              / * Port number */

 

  通訊端命名

  要讓其他的程序可使用一通訊端,server必須將通訊端命名,所以AF_INET會與IP阜數

  字連在一起

  int bind(int socket, const struct sockaddr *address, size_t address_len);

  bind系統呼叫指定參數指定的位址address到一位命名的通訊端,此通訊端關聯於檔案

  descriptor socket,位址結構的長度以address_len傳遞

 

  建立通訊端佇列

  Listen函數使socket處被動的監聽模式,並為該socket建立一個儲存輸入隊列,將服

  務請求保存在此隊列中,直到被程序處理為止。
 

  int listen(int socket, int backlog);

 

  接收連結

  一旦server程式建立並命名一通訊端, 即可用accept系統呼叫等待的連結

  int accept(int socket, struct sockaddr *address,size_t *address_len);

  

  連結請求

  connect啟動和遠端主機連線,有連接導向的TCP需以此做連結,無連結導向的UDP不需

  以此做連結

  int connect(int socket, const struct sockaddr *address,size_t address_len);

 

  關閉通訊端

     可以呼叫close來終止serverclient的通訊連結close(sockfd)

 

  首頁 | 網路導論 | TCP & UDP | Sever端 | Socket | Client端 | 執行緒Tread