函數(shù)說(shuō)明:socket()用來(lái)建立一個(gè)新的socket, 也就是向系統(tǒng)注冊(cè), 通知系統(tǒng)建立一通信端口. 參數(shù)domain 指定使用何種的地址類(lèi)型, 完整的定義在/usr/include/bits/socket.h 內(nèi), 底下是常見(jiàn)的協(xié)議:
江陵網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,江陵網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為江陵上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的江陵做網(wǎng)站的公司定做!
PF_UNIX/PF_LOCAL/AF_UNIX/AF_LOCAL UNIX 進(jìn)程通信協(xié)議
PF_INET?AF_INET Ipv4 網(wǎng)絡(luò)協(xié)議
PF_INET6/AF_INET6 Ipv6 網(wǎng)絡(luò)協(xié)議
PF_IPX/AF_IPX IPX-Novell 協(xié)議
PF_NETLINK/AF_NETLINK 核心用戶接口裝置
PF_X25/AF_X25 ITU-T X. 25/ISO-8208 協(xié)議
PF_AX25/AF_AX25 業(yè)余無(wú)線AX. 25 協(xié)議
PF_ATMPVC/AF_ATMPVC 存取原始 ATM PVCs
PF_APPLETALK/AF_APPLETALK appletalk (DDP)協(xié)議
PF_PACKET/AF_PACKET 初級(jí)封包接口
參數(shù) type 有下列幾種數(shù)值:
1、SOCK_STREAM 提供雙向連續(xù)且可信賴的數(shù)據(jù)流, 即TCP. 支持 OOB 機(jī)制, 在所有數(shù)據(jù)傳送前必須使用connect()來(lái)建立連線狀態(tài).
2、SOCK_DGRAM 使用不連續(xù)不可信賴的數(shù)據(jù)包連接
3、SOCK_SEQPACKET 提供連續(xù)可信賴的數(shù)據(jù)包連接
4、SOCK_RAW 提供原始網(wǎng)絡(luò)協(xié)議存取
5、SOCK_RDM 提供可信賴的數(shù)據(jù)包連接
6、SOCK_PACKET 提供和網(wǎng)絡(luò)驅(qū)動(dòng)程序直接通信. protocol 用來(lái)指定socket 所使用的傳輸協(xié)議編號(hào), 通常此參考不用管它, 設(shè)為0 即可.
返回值:成功則返回socket 處理代碼, 失敗返回-1.
錯(cuò)誤代碼:
1、EPROTONOSUPPORT 參數(shù)domain 指定的類(lèi)型不支持參數(shù)type 或protocol 指定的協(xié)議
2、ENFILE 核心內(nèi)存不足, 無(wú)法建立新的socket 結(jié)構(gòu)
3、EMFILE 進(jìn)程文件表溢出, 無(wú)法再建立新的socket
4、EACCESS 權(quán)限不足, 無(wú)法建立type 或protocol 指定的協(xié)議
5、ENOBUFS/ENOMEM 內(nèi)存不足
6、EINVAL 參數(shù)domain/type/protocol 不合法
1、gets() 函數(shù)是從鍵盤(pán)輸入字符串,該函數(shù)只有一個(gè)參數(shù)。參數(shù)類(lèi)型為 char* 型,即 str 可以是一個(gè)字符指針變量名,也可以是一個(gè)字符數(shù)組名。打開(kāi)編輯器,新建一個(gè)c語(yǔ)言文件,引入標(biāo)準(zhǔn)庫(kù)并新建主函數(shù):
2、gets() 函數(shù)的功能是從輸入緩沖區(qū)中讀取一個(gè)字符串存儲(chǔ)到字符指針變量 str 所指向的內(nèi)存空間,這里的程序是用gets函數(shù)輸入字符串,可以看到不像scanf那樣需要使用%號(hào),gets函數(shù)中直接傳入字符串即可:
3、最后運(yùn)行下程序,輸入“i love you”,可以看到gets函數(shù)可以直接輸出空格,而scanf函數(shù)輸出空格則需要使用轉(zhuǎn)義字符實(shí)現(xiàn),因此gets函數(shù)的使用要比scanf簡(jiǎn)潔的多。以上就是gets函數(shù)使用方法的演示:
舉一個(gè)用遞歸調(diào)用函數(shù)求輸入非負(fù)整數(shù)的階乘的例子,如下:
//#include?"stdafx.h"http://If?the?vc++6.0,?with?this?line.
#include?"stdio.h"
int?fact(int?n){
if(n==1?||?n==0)?return?1;
else?return?n*fact(n-1);
}
int?main(void){
int?x;
while(1){
printf("Input?x(int?12=x=0)...\nx=");
if(scanf("%d",x),x=0??x=12)//x12時(shí)會(huì)使結(jié)果溢出
break;
printf("Error,redo:?");
}
printf("%d!?=?%d\n",x,fact(x));
return?0;
}
函數(shù)指針告訴CPU下一步需要執(zhí)行哪里的代碼的指針, 一數(shù)組十分相像.
#include?stdio.h
void?function(int?i,?double?d)????//一個(gè)函數(shù)的聲明
{
printf("函數(shù)運(yùn)行,?%d,?%lf\n",?i,?d);
}
void?AnotherFunction(int?i,?double?d)????//另外一個(gè)函數(shù)聲明
{
printf("又一個(gè)函數(shù)運(yùn)行,?%d,?%lf\n",?i,?d);
}
int?main()
{
void?(*pFun)(int,?double);????//定義了一個(gè)函數(shù)指針
int?(*p)(int?,?double);????//用于調(diào)試的函數(shù)指針
pFun?=?function;????//讓這個(gè)函數(shù)指針指向第一個(gè)函數(shù)
pFun(10,?10.101);????//通過(guò)這個(gè)函數(shù)指針來(lái)調(diào)用第一個(gè)函數(shù)
pFun?=?AnotherFunction;????//讓這個(gè)函數(shù)指針指向第二個(gè)函數(shù)
pFun(20,?20.202);????//通過(guò)這個(gè)函數(shù)指針來(lái)調(diào)用第二個(gè)函數(shù)
//若將以下代碼取消注釋,?就會(huì)產(chǎn)生錯(cuò)誤
/*
p?=?function;
p?=?AnotherFunction;
//原因很簡(jiǎn)單,?因?yàn)閜是必須指向一個(gè)返回值為int,?第一個(gè)參數(shù)為int,?第二個(gè)參數(shù)為double的函數(shù),?但是在此代碼中定義的函數(shù)返回值是void
*/
//這個(gè)實(shí)驗(yàn)中,?直接用函數(shù)名來(lái)賦值了,?是因?yàn)楹瘮?shù)名其實(shí)就是這個(gè)函數(shù)的指針
//而在平常調(diào)用函數(shù)時(shí),?都要加上(),?如:printf("");
//這里,?"()"就相當(dāng)于'*'(就是取值運(yùn)算符),?printf是函數(shù)指針,?就相當(dāng)于是數(shù)組名,?即數(shù)組的首地址
return?0;
}
新聞名稱:c語(yǔ)言選擇函數(shù)事例 c語(yǔ)言選擇函數(shù)怎么寫(xiě)
網(wǎng)站地址:http://aaarwkj.com/article30/dooocso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、外貿(mào)建站、App開(kāi)發(fā)、Google、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)