int socket(int domain, int type, int protocol);
成功時返回檔案描述符,失敗時返回-1。
domain:套接字中使用的協議族(protocol family)資訊。
type:套接字資料傳輸型別資訊。
protocol:計算機間通訊中使用的協議資訊。
標頭檔案sys/socket.h中宣告的協議族 名稱
協議族pf_inet
ipv4
pf_inet6
ipv6
pf_local
本地通訊的unix協議族
pf_packet
底層套接字的協議族
pf_ipx
ipx novell協議族
主要用pf_inet協議族。
套接字型別指的是套接字的資料傳輸方式,通過第二個引數傳遞。協議族中存在著多種資料傳輸方式。
sock_stream:面向連線的套接字
收發資料的套接字內部有buffer(緩衝區)。所以可以n對m的進行read()和write()。
當buffer滿了之後,傳輸端套接字將停止傳輸。
「可靠的、按序傳遞的、基於位元組的面向連線的資料傳輸方式的套接字」
sock_dgram:面向訊息的套接字
「不可靠的、不按序傳遞的、以資料的高速傳輸為目的的套接字」
在大部分情況俠,傳遞前兩個引數即可建立所需的套接字。所以可以向第三個引數傳遞0。
但是會遇到,同一協議族中存在多個資料傳輸方式相同的協議。
在基於ipv4網路協議族中:
sock_stream只有ipproto_tcp。
sock_dgram只有ipproto_udp。
#include #include #include #include #include #include void error_handling(char *message);
int main(int argc, const char * ar**)
sock = socket(pf_inet, sock_stream, 0);
if(sock == -1)
error_handling("socket() error");
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family=af_inet;
serv_addr.sin_addr.s_addr=inet_addr(ar**[1]);
serv_addr.sin_port=htons(atoi(ar**[2]));
if(connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))==-1)
error_handling("connect() error!");
int idx=0,read_len=0;
while(read_len=read(sock, &message[idx++],1))
if(str_len==-1)
error_handling("read() erroe!");
printf("message from server : %s\n",message);
printf("use read() %d times",idx);
close(sock);
return 0;
}void error_handling(char* s)
套接字型別與協議設定
本次學習主要了解socket函式的建立以及不同套接字的特性,只涉及到socket函式,所以大家不用覺得困難,但是會有些枯燥,這是後面實際網路程式設計的基礎,需要好好掌握。看一下socket函式 include int socket int domain,int type,int protocol 第...
網路程式設計 2 套接字型別與協議設定
協議就是為了完成資料交換而定好的約定。include intsocket int domain,int type,int protocol domain 套接字中使用的協議族資訊 type 套接字資料傳輸型別資訊 protocol 計算機間通訊中使用的協議資訊 名稱 協議族pf inet ipv4網...
TCP IP 第1章 理解網路程式設計和套接字
1.socket函式建立套接字。2.呼叫bind函式給套接字分配ip位址和埠號。3.呼叫listen函式轉為可接受請求狀態。4.呼叫accept函式受理連線請求 include include include include include include using namespace std v...