1、setprotoent(開啟網路協議的資料檔案)
相關函式 getprotobyname, getprotobynumber, endprotoent
表頭檔案 #include
定義函式 void setprotoent (int stayopen);
函式說明
setprotoent()用來開啟/etc/protocols,如果引數stayopen值
非零,則接下來的
getprotobyname()或getprotobynumber()將不會自動關閉此檔案。
2、setservent(開啟主機網路服務的資料檔案)
相關函式 getservent, getservbyname, getservbyport, endservent
表頭檔案 #include < netdb.h >
定義函式 void setservent (int stayopen);
函式說明
setservent()用來開啟/etc/services,如果引數stayopen值非零,則接下來的getservbyname()或getservbyport()將補回自動關閉檔案。
3、setsockopt(設定socket狀態)
相關函式 getsockopt
表頭檔案 #include
#include
定義函式 int setsockopt(int sfd,int level,int optname,const void * optval,,socklen_toptlen);
函式說明
setsockopt()用來設定引數sfd所指定的socket狀態。
引數level代表欲設定的網路層,一般設成sol_socket以訪問socket層。
引數optname代表欲設定的選項,有下列幾種數值:
so_debug
開啟或關閉排錯模式
so_reuseaddr
允許在bind()過程中本地位址可重複使用
so_type
返回socket形態。
so_error
返回socket已發生的錯誤原因
so_dontroute
送出的資料報不要利用路由裝置來傳輸。
so_broadcast
使用廣播方式傳送
so_sndbuf
設定送出的暫存區大小
so_rcvbuf
設定接收的暫存區大小
so_keepalive 定期確定連線是否已終止。
so_oobinline 當接收到oob 資料時會馬上送至標準輸入裝置
so_linger 確保資料安全且可靠的傳送出去。
引數 optval代表欲設定的值,引數optlen則為optval的長度。
返回值 成功則返回0,若有錯誤則返回-1,錯誤原因存於errno。
附加說明 ebadf 引數s並非合法的socket處理**
enotsock 引數s為一檔案描述詞,非socket
enoprotoopt 引數optname指定的選項不正確。
efault 引數optval指標指向無法訪問的記憶體空間。
範例 參考getsockopt()。
4、shutdown(終止socket通訊)
相關函式 socket,connect
表頭檔案 #include
定義函式 int shutdown(int s,int how);
函式說明
shutdown()用來終止引數s所指定的socket連線。引數s是連線中的socket處理**,引數how有下列幾種情況:
how=0 終止讀取操作。
how=1 終止傳送操作
how=2 終止讀取及傳送操作
返回值 成功則返回0,失敗返回-1,錯誤原因存於errno。
錯誤** ebadf 引數s不是有效的socket處理**
enotsock 引數s為一檔案描述詞,非socket
enotconn 引數s指定的socket並未連線
5、socket(建立乙個socket通訊)
相關函式 accept,bind,connect,listen
表頭檔案 #include
#include
定義函式 int socket(int domain,int type,int protocol);
函式說明
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_packet/af_packet 初級封包介面
引數
type
有下列幾種數值:
sock_stream 提供雙向連續且可信賴的資料流,即tcp。支援
oob 機制,在所有資料傳送前必須使用connect()來建立連線狀態。
sock_dgram 使用不連續不可信賴的資料報連線
sock_seqpacket 提供連續可信賴的資料報連線
sock_raw 提供原始網路協議訪問
sock_rdm 提供可信賴的資料報連線
sock_packet 提供和網路驅動程式直接通訊。
protocol
用來指定socket所使用的傳輸協議編號,通常此參考不用管它,設為0即可。
返回值 成功則返回socket處理**,失敗返回-1。
錯誤** eprotonosupport 引數domain指定的型別不支援引數type或protocol指定的協議
enfile 核心記憶體不足,無法建立新的socket結構
emfile 程序檔案表溢位,無法再建立新的socket
eaccess 許可權不足,無法建立type或protocol指定的協議
enobufs/enomem 記憶體不足
einval 引數domain/type/protocol不合法
範例 參考connect()。
linux下socket 程式設計常用標頭檔案
sys types.h 資料型別定義 sys socket.h 提供socket函式及資料結構 netinet in.h 定義資料結構sockaddr in netdb.h 提供設定及獲取網域名稱的函式 sys ioctl.h 提供對i o控制的函式 sys poll.h 提供socket等待測試機...
Linux下常用的C C 開源Socket庫
1.linux socket programming in c 2.ace ace採用ace os適配層遮蔽各種不同的 複雜繁瑣的作業系統api。ace是乙個大型的中介軟體產品,20萬行左右,過於巨集大,一堆的設計模式,架構了一層又一層。它龐大 複雜,適合大型專案。開源 免費,不依賴第三方庫。使用的...
Linux下常用的C C 開源Socket庫
1.linux socket programming in c 2.ace ace採用ace os適配層遮蔽各種不同的 複雜繁瑣的作業系統api。ace是乙個大型的中介軟體產品,20萬行左右,過於巨集大,一堆的設計模式,架構了一層又一層。它龐大 複雜,適合大型專案。開源 免費,不依賴第三方庫。使用的...