本文目錄一覽:
c語言socket編程read()函數問題
write/read,是關於寫特定的文件描述符使用的比較底層的系統調用,
sendto/recvfrom適用於用udp(數據包)方式的套接字中使用的,
其他的沒見過,我是學linux編程的
Windows下的socket和Linux下的socket是不一樣的,我沒有查到sendmsg/recvmsg這個方法,上面的鏈接是一個類似的函數,它和send/recv 的區別是,這個函數可以發送socket控制信息,看API就知道。
另外我也沒有看到有write/read函數。 sendto/recvfrom用於UDP鏈接,send/recv用於TCP鏈接。
你列舉的其餘函數,我都沒找到。下面的API地址供樓主查詢驗證。
c語言中關於socket函數的例子
函數說明:socket()用來建立一個新的socket, 也就是向系統註冊, 通知系統建立一通信埠. 參數domain 指定使用何種的地址類型, 完整的定義在/usr/include/bits/socket.h 內, 底下是常見的協議:
PF_UNIX/PF_LOCAL/AF_UNIX/AF_LOCAL UNIX 進程通信協議
PF_INET?AF_INET Ipv4 網路協議
PF_INET6/AF_INET6 Ipv6 網路協議
PF_IPX/AF_IPX IPX-Novell 協議
PF_NETLINK/AF_NETLINK 核心用戶介面裝置
PF_X25/AF_X25 ITU-T X. 25/ISO-8208 協議
PF_AX25/AF_AX25 業餘無線AX. 25 協議
PF_ATMPVC/AF_ATMPVC 存取原始 ATM PVCs
PF_APPLETALK/AF_APPLETALK appletalk (DDP)協議
PF_PACKET/AF_PACKET 初級封包介面
參數 type 有下列幾種數值:
1、SOCK_STREAM 提供雙向連續且可信賴的數據流, 即TCP. 支持 OOB 機制, 在所有數據傳送前必須使用connect()來建立連線狀態.
2、SOCK_DGRAM 使用不連續不可信賴的數據包連接
3、SOCK_SEQPACKET 提供連續可信賴的數據包連接
4、SOCK_RAW 提供原始網路協議存取
5、SOCK_RDM 提供可信賴的數據包連接
6、SOCK_PACKET 提供和網路驅動程序直接通信. protocol 用來指定socket 所使用的傳輸協議編號, 通常此參考不用管它, 設為0 即可.
返回值:成功則返回socket 處理代碼, 失敗返回-1.
錯誤代碼:
1、EPROTONOSUPPORT 參數domain 指定的類型不支持參數type 或protocol 指定的協議
2、ENFILE 核心內存不足, 無法建立新的socket 結構
3、EMFILE 進程文件表溢出, 無法再建立新的socket
4、EACCESS 許可權不足, 無法建立type 或protocol 指定的協議
5、ENOBUFS/ENOMEM 內存不足
6、EINVAL 參數domain/type/protocol 不合法
在windows下用C語言如何實現socket網路編程,需要用到哪些頭文件或者庫?
需要用到的頭文件包含:
#include winsock2.h
#include windows.h
與Linux環境下socket編程相比,windows環境多了一個步驟:啟動或者初始化winsock庫
Winsock,一種標準API,一種網路編程介面,用於兩個或多個應用程序(或進程)之間通過網路進行數據通信。具有兩個版本:
Winsock 1:
Windows CE平台支持。
頭文件:WinSock.h
庫:wsock32.lib
Winsock 2:
部分平台如Windows CE貌似不支持。通過前綴WSA可以區別於Winsock 1版本。個別函數如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都屬於Winsock 1.1規範的函數;
頭文件:WinSock2.h
庫:ws2_32.lib
mswsock.h用於編程擴展,使用時必須鏈接mswsock.dll
擴展資料
winsock庫的載入與卸載:
載入:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
載入成功,返回值為0。
WORD wVersionRequested:載入的winsock版本,使用宏MAKEWORD(x, y),x表示高位元組,y表示低位元組。然而使用時MAKEWORD(2, 2)。高位元組與低位元組相同~~
LPWSADATA lpWSAData:WSADATA結構的指針,傳入參數後,系統幫助我們填充版本信息。有興趣的可以看看結構體內容,不過基本用不著。
卸載:int WSACleanup(void);比起載入,卸載的函數真是輕鬆愉快。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/289415.html