程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話設置和獲得socket狀況的相干函數用法

C說話設置和獲得socket狀況的相干函數用法

編輯:關於C++

C說話設置和獲得socket狀況的相干函數用法。本站提示廣大學習愛好者:(C說話設置和獲得socket狀況的相干函數用法)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話設置和獲得socket狀況的相干函數用法正文


C說話setsockopt()函數:設置socket狀況
頭文件:

#include <sys/types.h>  #include <sys/socket.h>

界說函數:

int setsockopt(int s, int level, int optname, const void * optval, ,socklen_toptlen);

函數解釋:setsockopt()用來設置參數s 所指定的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.

附加解釋:
1、EBADF 參數s 並不是正當的socket 處置代碼
2、ENOTSOCK 參數s 為一文件描寫詞, 非socket
3、ENOPROTOOPT 參數optname 指定的選項不准確.
4、EFAULT 參數optval 指針指向沒法存取的內存空間.

C說話getsockopt()函數:獲得socket 狀況
頭文件:

#include <sys/types.h>  #include <sys/socket.h>

界說函數:

int getsockopt(int s, int level, int optname, void* optval, socklen_t* optlen);

函數解釋:getsockopt()會將參數s 所指定的socket 狀況前往. 參數optname 代表欲獲得何種選項狀況, 而參數optval 則指向欲保留成果的內存地址, 參數optlen 則為該空間的年夜小. 參數level、optname 請參考setsockopt().

前往值:勝利則前往0, 如有毛病則前往-1, 毛病緣由存於errno

毛病代碼:
1、EBADF 參數s 並不是正當的socket 處置代碼
2、ENOTSOCK 參數s 為一文件描寫詞, 非socket
3、ENOPROTOOPT 參數optname 指定的選項不准確
4、EFAULT 參數optval 指針指向沒法存取的內存空間

典范

#include <sys/types.h>
#include <sys/socket.h>
main()
{
  int s;
  int optval;
  int optlen = sizeof(int);
  if((s = socket(AF_INET, SOCK_STREAM, 0)) < 0)
  perror("socket");
  getsockopt(s, SOL_SOCKET, SO_TYPE, &optval, &optlen);
  printf("optval = %d\n", optval);
  close(s);
}

履行:

optval = 1 //SOCK_STREAM 的界說恰是此值

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved