日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创建套接字socket函数的详解(sock_stream和sock_dgram的分析)

發布時間:2023/12/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建套接字socket函数的详解(sock_stream和sock_dgram的分析) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先放上創建套接字的代碼,再具體講述函數中每一個參數的具體含義:

#include <sys/socket.h> int socket(int domain,int type,int protocol); ->成功時返回文件描述,失敗時返回-1(linux) #include <winsock2.h> SOCKET socket(int af,int type,int protocol); ->成功時返回socket句柄,失敗時返回INVALID_SOCKET/

這里有三個參數(以linux下為例):

(1)、domain:套接字中使用的協議族(Protocol Family)信息;

(2)、type:套接字數據傳輸類型信息

(3)、protocol:計算機間通信中使用的協議信息

其中第一個協議族的信息主要有如下幾類,但是常用的是IPV4協議族(PF_INET)

PF_INET:IPv4協議族
PF_INET6:IPv6協議族
PF_LOCAL:本地通信的UNIX協議族
PF_PACKET:底層套接字的協議族

PF_IPX:IPX Novell協議族

第二個參數是套接字類型,具有代表性的又兩種:

(1)、面向連接的套接字(SOCK_STREAM)

這種類型的特點有:

a、傳輸過程中數據不丟失

b、按序傳輸數據(先發先達)

c、傳輸的數據不存在數據邊界

可以總結為:“可靠地、按序傳遞的、基于字節的面向連接的數據傳輸方式的套接字”

(2)、面向消息的套接字(SOCK_DGRAM)

這種類型的特點有:

a、強調快速傳輸而非傳輸順序

b、傳輸數據可能丟失也可能損壞

c、傳輸的數據有數據邊界

d、限制每次傳輸的數據大小

可以總結為:“不可靠的、不按順序的、以數據的高速傳輸為目的的套接字”

第三個參數主要是作為第一個,第二個參數無法指定類型的時的一種附加,但是通常來說我們常用的套接字不必要用到這一參數,賦值為0即可,這里不做過多贅述,只給出兩個例子來說明:

滿足IPv4協議,且是面向連接傳輸的只有:IPPROTO_TCP int socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); 滿足IPv4協議,且是面向消息傳輸的只有:IPPROTO_UDP int socket(PF_INET,SOCK_STREAM,IPPROTO_UDP);

最后附上Windows下初始化Winsock的模板寫法:

SOCKET soc=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); if(soc==INVALID_SOCKET)ErrorHandling("...");

總結

以上是生活随笔為你收集整理的创建套接字socket函数的详解(sock_stream和sock_dgram的分析)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。