VxWorks的Socket應用框架

Socket應用框架

一、BSDsocket常常構造兩種應用類型:

1、面向連接的SOCK_STREAM應用:它是基於TCP協議的應用。


連接後雙方數據以流的形式發送和接收,可以通過I/O系統基本調用read/write或者專門的BSDsocket調用send/recv。

服務器端在處理客戶連接請求時有兩種不同設計:

併發處理:建立連接後,創建一個新任務處理隨後過程,服務器繼續創建生成新任務。

循環處理:服務器直接和客戶交互,服務結束關閉連接後才接受下一個客戶連接請求。

面向連接的socket應用:

a、創建socket

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

domain表明通信域,type指定socket類型,protocol表示該socket屬於那種通信協議。procotol=0表明用的是SOCK_STREAM和SOCK_DGRAM協議。

b、綁定端點地址

調用爲:STATUS bind (int s,struct sockaddr*name,int namelen);

s爲socket描述符,name爲要綁定的本地端點地址,namelen爲name的結構體長度。

c、建立連接

客戶端通過connect()調用指明和遠端的另一個端點地址建立一個TCP的socket連接。因此客戶端需要指定連接的遠程端地址。



STATUS connect(int s,struct sockaddr*name,int namelen);


d、在連接的socket上發送和接收

read(s,buf,buflen);/*接收socket數據*/

write(s,buf,buflen);/*發送socket數據*/

s已經連接的socket描述符,buf接收/發送的數據放入的目標緩衝區,buflen期待接收/發送多少字節。


e、關閉連接

當客戶或服務器不需要socket連接時,調用close()將其關閉。


2、面向無連接的SOCK_DGRAM應用:它是基於UDP協議的應用


socket可以和任意的服務器通信,服務器socket收到的數據報也可能來自任意客戶。

無連接socket和有連接socket區別:

a、無連接的發送有sendto完成;接收由recvfrom完成。

b、無連接socket調用connect

無連接socket調用connect指明一個目的地端點地址,但是connect不建立一個傳輸層連接,而是將目的地端點地址立即放入該socket的系統數據結構中。


發佈了32 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章