程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 網絡編程基礎

網絡編程基礎

編輯:關於C語言

參考文章:http://www.cnblogs.com/songQQ/archive/2009/09/03/1559838.html

http://www.cnblogs.com/newlist/archive/2012/02/19/2358392.html

一、socket概述

    1、socket定義

    Linux中的網絡編程是通過socket來進行的。常說的socket接口是一種特殊的I/O,它也是一種文件描述符。每一個socket都用一個半相關描述{協議,本地地址,本地端口}來表示;一個完整的套接字則用一個相關描述{協議,本地地址,本地端口,遠程地址,遠程端口}來實現。socket也有類似打開文件的函數調用,該函數返回一個整型的socket描述符,隨後連接建立、數據傳輸都是通過socket來實現的。

    在運行TCP/IP協議的計數機中,一般都支持軟件虛擬的ip數據報自環接口loopback。如果試圖和ip地址等於自己地址的計算機通信,數據不會發到網絡上,而是通過內核實現的虛擬的自環接口loopback將數據自環到計算機本身。利用這一點,可以在一個計算機的多個進程之間進行通信。現在的許多軟件設計,同一台計算機內的進程之間通信也使用socket方式,這使得系統有很大的靈活性,因為需要的時候,只要將兩個進程分布到不同的計算機上就可以了,而不需要更改程序。socket只是進程之間通信的一種方法,其他方法還有很多。

    2、socket類型

(1)流式socket(SCOK_STREAM)

    流式套接字提供可靠的、面向連接的的通信流,使用TCP協議。

(2)數據報socket(SCOKET_DGRAM)

    無連接的服務,使用UDP。

(3)原始socket

    原始套接字允許對底層協議如IP或者ICMP進行直接訪問,用於協議的開發。

    3、下圖表示了協議之間的關系

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved