借用一下網友的說法:

網路中的進程是通過socket來通信的,那什麼是socket呢?socket起源於Unix,而Unix/Linux基本哲學之一就是「一切皆文件」,都可以用「打開open –> 讀寫write/read –> 關閉close」模式來操作。我的理解就是Socket就是該模式的一個實現,socket即是一種特殊的文件。

其在linux和windows環境下的頭文件主要是:#include<sys/socket.h>和#include<WinSock2.h>

有關 socket的用法:

intsocket(int domain,int type, int protocol)

_________________________返回值:非負描述符 – 成功,-1 - 出錯

其中:

family指明了協議族/域,通常AF_INET、AF_INET6、AF_LOCAL等;

type是套介面類型,主要SOCK_STREAM、SOCK_DGRAM、SOCK_RAW;

protocol一般取為0。成功時,返回一個小的非負整數值,與文件描述符類似。

對於windows環境下,在調用該函數之前需首先調用WSAStartup函數完成對Winsock服務的初始化,如

#include<WinSock2.h>

WSADATA wdata;

if ( WSAStartup(MAKEWORD(2,2), &wdata) !=0 ){

return INVALID_SOCKET;

}

後面即可調用socket函數,參數意義與linux環境一致。


我來回答一下,建議去看一本書。

Unix network programming : the sockets networking API

在這本書中,socket編程與網路協議的關係描述得比較詳細。可以閱讀。至於函數的使用,最好去看man,就可以了。Richard Steven的書都不錯,可以好好看看。


推薦閱讀:
相关文章