socket函式及引數

2021-07-03 04:06:43 字數 2143 閱讀 4379

函式原型:

int

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

domain:
即協議域,又稱為協議族(family)

af_inet    :  ipv4

af_inet6 :  ipv6

af_local

(或稱af_unix

,unix域socket)

af_route

type:
sock_stream     1               /* stream socket */		流(tcp)
sock_dgram      2               /* datagram socket */		包(udp)
sock_raw        3               /* raw-protocol inte***ce */	原始
sock_rdm        4               /* reliably-delivered message */可靠的資料報連線
sock_seqpacket  5               /* sequenced packet stream */	有序的資料流
protocol:
常用的協議有

ipproto_tcp:

tcp傳輸協議

ipptoto_udp:

udp傳輸協議

ipproto_sctp:

stcp傳輸協議

ipproto_tipc

:tipc傳輸協議

structin_addr ;

in_addr_t 一般為 32位的unsigned int, 使用函式in_addr_t inet_addr(const char* strptr)轉化,如:

struct in_addr s;

s.s_addr = inet_addr("192.168.1.69");

建立udp socket

int usock = invail_socket;

struct sockaddr_in udpsvr_addr;

unsigned long bindaddr = inaddr_none;

#ifdef win32

wsadata wsadata;

wsastartup(makeword(2, 2), &wsadata);

#endif

//bzero(&udpsvr_addr, sizeof(udpsvr_addr));

memset(&udpsvr_addr, 0, sizeof(udpsvr_addr));

udpsvr_addr.sin_family = af_inet;

udpsvr_addr.sin_port = htons(port);

bindaddr = ((null == srcaddr) ? htonl(inaddr_any) : inet_addr(srcaddr));

#ifdef win32

udpsvr_addr.sin_addr.s_un.s_addr = bindaddr;

#else //defined(linux)

udpsvr_addr.sin_addr.s_addr = bindaddr;

#endif

if ((usock = socket(af_inet, sock_dgram, 0)) <= 0)

if (bind(usock, (struct sockaddr *)&udpsvr_addr, sizeof(udpsvr_addr)) < 0)

return usock;

Socket函式引數說明轉

socket函式引數說明 1 wsastartup函式 用於初始化winsock 宣告 intwsastarup word wversionrequested,lpwsadata lpwsadata 引數 wversionrequested 要求使用winsock的最低版本號 lpwsadata w...

8 函式及引數

一.函式 1.含義 包裹一部分 實現某乙個功能 達成某乙個目的 2.特點 可以反覆呼叫,提高 的復用性,提高開發效率,便於維護管理 3.函式的格式 定義函式 def 函式名 code 呼叫函式 函式名 4.函式的命名 命名規則與變數一樣 字母數字下劃線,首字元不能用數字 嚴格區分大小寫,且不能用關鍵...

Python 函式及引數

函式引數定義的順序必須是 必選引數 預設引數 可變引數 命名關鍵字引數和關鍵字引數。使用遞迴函式需要注意防止棧溢位。在計算機中,函式呼叫是通過棧 stack 這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,...