套接字是一種進程間的通信的方法,不同於以往介紹的進程間通信方法的是,它並不局限於同一台計算機的資源,例如文件系統空間,共享內存或者消息隊列。套接字可以認為是對管道概念的擴展——一台機器上的進程可以使用套接字與另一台機器上的進程通信。因此客戶與伺服器可以分散在網路中。同一台機器上的進程間也可以用套接字通信。套接字是一種通信機制,客戶/伺服器系統既可以在本地單機上運行,也可以在網路中運行。套接字與管道的區別:它明確區分客戶與伺服器,可以實現將多個客戶連接到一個伺服器。
套接字的工作過程(伺服器端):首先,伺服器應用程序通過socket系統調用創建一個套接字,它是系統分配給該伺服器進程的類似文件描述符的資源,不能與其他進程共享。其次,伺服器進程使用bind系統調用給套接字命名。本地套接字的名字是linux文件系統的文件名,一般放在/tmp或者/usr/tmp 目錄下。網路套接字的名字是與客戶相連接的特定網路有關的服務標識符。此標識符允許linux將進入的針對特定埠號的連接轉到正確的伺服器進程。接下來,伺服器進程開始等待客戶連接到這個命名套接字,調用listen創建一個等待隊列以便存放來自客戶的進入連接。最後,伺服器通過accept系統調用來接受客戶的連接。此時,會產生一個與原有的命名套接字不同的新套接字,它僅用於與這個特定的客戶通信,而命名套接字則被保留下來繼續處理來自其他客戶的連接。
套接字的工作過程(客戶端):調用socket創建一個未命名套接字,將伺服器的命名套接字作為一個地址來調用connect與伺服器建立連接。一旦建立了連接,就可以像使用底層文件描述符那樣來用套接字進行雙向的數據通信。
TCP協議:
伺服器端:tcp_server.c
『貳』 c語言可以編寫通過無線網路傳輸的協議嗎
你好!
c
語言可以。
你說不考慮硬體是不可能的,軟體是建立在硬體的基礎上的,其實能編寫通過無線網路傳輸的協議不斤只有c
語言,但是能夠和硬體緊密結合的還得數c
語言了
基於unix和linux
的無線網路傳輸的協議幾乎都是用c編寫的
我的回答你還滿意嗎~~