socket簡介:
眾所周知,基於網路分層結構,我們構建了目前所使用的網路。而基於分層思想,網路體系中每層只需要完成自己的任務,而網路中每個層次之間的協作是由上層呼叫下層提供的介面(api)來實現的。socket就是傳輸層提供給應用層的網路程式設計介面,它起源於unix,目前是事實上的工業標準,所以它的重要性就不言而喻了。socket是開發基於**客戶/伺服器(c/s)通訊模型應用程式的主要主要手段。它的設計繼承了unix/linux
」萬物皆檔案「**的設計哲學,在實際程式設計中,我們可以把它看作是一種特殊的檔案。
socket標識:
標識通訊端點(對外):
作業系統/程序管理套接字(對內):
sockaddr_in
結構:
struct sockaddr_in
socket常用函式總覽:int
wsastartup
(word wversionrequested, lpwsadata ipwsadata)
;
第二個引數返回實際的winsock
的版本資訊。
返回值為0時表示成功。
例子:使用2.1版本的winsock的程式**:
word request;
wsadata ws;
request =
makeword(2
,1);
int err =
wsastartup
(request,
&ws);if
(err !=0)
if(lobyte
(ws.wversion)!=2
||hibyte
(ws.wversion)!=1
)return true;
int
wsacleanup
(void
);
int
socket
(int protofamily,
int type,
int proto)
第二個引數(套接字型別):
第三個引數(協議號):
例子:建立乙個流套接字:
struct protoent *p;
p =getprotobyname
("tcp");
//通過協議名得到協議號
socket sd =
socket
(pf_inet, sock_stream, p->p_proto)
;
int
closesocket
(int sd)
;//windows
intclose
(int sd)
;//linux
返回值:
int
bind
(int sd,
const
struct sockaddr* localaddr, socklen_t addrlen)
;
第乙個引數(套接字描述符)
客戶端一般不必呼叫bind
函式。(因為一般就乙個網絡卡)
伺服器端有可能會連線多個網路,同時擁有多個ip位址,此時應使用位址萬用字元inaddr_any
來匹配所有連線的ip位址。
int
connect
(int sd,
const
struct sockaddr *saddr, socklen_t saddrlen)
;
int
listen
(int sd,
int queuesize)
;
第二個引數,設定連線請求佇列大小
返回值:
int
accept
(int sd,
struct sockaddr *caddr,
int*caddrlen)
利用返回的新的套接字newsock
與客戶通訊。
caddr
和caddrlen
分別用於返回客戶端套接字的位址和位址長度
int
recv
(int sd,
void
*buffer,
int len,
int flags)
;
int recvform(int sockfd, void *buf, int len, int flags, struct sockaddr *src_addr, int *addrlen)
int
send
(int sd,
const
void
*buf, size_t len,
int flags)
;
int
sendto
(int sd,
const
void
*buf, size_t len,
int flags)
;
socket程式設計常用函式總結
資料型別 int8 t 帶符號8位整數 uint8 t 無符號8位整數 sa family t 套介面位址結構的位址族 socklen t 長度,一般為uint32 t in addr t ipv4 位址,一般32位 in port t tcp udp 埠,一般16位 結構 struct in ad...
linux下socket常用函式
1 setprotoent 開啟網路協議的資料檔案 相關函式 getprotobyname,getprotobynumber,endprotoent 表頭檔案 include 定義函式 void setprotoent int stayopen 函式說明 setprotoent 用來開啟 etc p...
socket網路程式設計介面常用函式
3.listen函式 4.accept函式 5.connect函式 6.recv函式 7.closesocket shutdown 函式 中斷連線 int socket socket int af,int type,int protocol af 位址資料族系 type 通訊方式 protocal ...