c語言中send函數(shù) c++ send函數(shù)

C語言 send()函數(shù)理解

使用函數(shù)getsockopt獲得發(fā)送緩沖區(qū)的長度。用法如下:

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供扎賚諾爾網(wǎng)站建設(shè)、扎賚諾爾做網(wǎng)站、扎賚諾爾網(wǎng)站設(shè)計(jì)、扎賚諾爾網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、扎賚諾爾企業(yè)網(wǎng)站模板建站服務(wù),十載扎賚諾爾做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

int sockfd;

int val;

int len;

sockfd = socket (AF_INET, SOCK_STREAM, 0);

len = sizeof (val);

getsockopt( sockfd, SOL_SOCKET, SO_SNDBUF, val, len);

printf ("sndbuf len=%d\n", val);

在32位linux系統(tǒng)上發(fā)送緩沖區(qū)為16K ,可以使用setsockopt()修改,會影響網(wǎng)絡(luò)性能

c語言。sendbyte()函數(shù)

語法上看:

P2=0xC0;//p2 與等于 0xc0,相當(dāng) P2 = P20XC0,

sendbyte(data1);//把data1變量作為參數(shù)傳給函數(shù)sendbyte,看函數(shù)名,似乎是要發(fā)送數(shù)據(jù)的樣子

P2|=0x01;//這句 相當(dāng)于 P2 = P2|0X01,作用是將P2的最低位值1

在C語言中send buff的用法?

C語言中的標(biāo)準(zhǔn)庫中是沒有Send函數(shù)的。

從名稱來看應(yīng)該是自定義的函數(shù)。具體實(shí)現(xiàn)的功能、參數(shù)及調(diào)用的要求,需要在閱讀函數(shù)之后才能得到結(jié)論。

當(dāng)然如果是C++的話,在Tcp中是具備Send函數(shù)的。具體見下:

send()用于向一個(gè)已經(jīng)連接的socket發(fā)送數(shù)據(jù),如果無錯誤,返回值為所發(fā)送數(shù)據(jù)的總數(shù),否則返回SOCKET_ERROR。

簡述

向一個(gè)已連接的 套接口發(fā)送數(shù)據(jù)。

#include winsock.h

int PASCAL FAR send( SOCKET s, const char FAR* buf, int len, int flags);

s:一個(gè)用于標(biāo)識已連接套接口的描述字。

buf:包含待發(fā)送數(shù)據(jù)的 緩沖區(qū)。

len:緩沖區(qū)中數(shù)據(jù)的長度。

flags:調(diào)用執(zhí)行方式。

注釋

send()適用于已連接的數(shù)據(jù)包或流式 套接口發(fā)送數(shù)據(jù)。對于數(shù)據(jù)報(bào)類套接口,必需注意發(fā)送數(shù)據(jù)長度不應(yīng)超過 通訊子網(wǎng)的IP包最大長度。IP包最大長度在 WSAStartup()調(diào)用返回的WSAData的iMaxUdpDg元素中。如果數(shù)據(jù)太長無法自動通過下層協(xié)議,則返回WSAEMSGSIZE錯誤,數(shù)據(jù)不會被發(fā)送。

請注意成功地完成send()調(diào)用并不意味著 數(shù)據(jù)傳送到達(dá)。

如果傳送系統(tǒng)的 緩沖區(qū)空間不夠保存需傳送的數(shù)據(jù),除非套接口處于非阻塞I/O方式,否則send()將阻塞。對于非阻塞SOCK_STREAM類型的套接口,實(shí)際寫的數(shù)據(jù)數(shù)目可能在1到所需大小之間,其值取決于本地和遠(yuǎn)端主機(jī)的 緩沖區(qū)大小??捎?select()調(diào)用來確定何時(shí)能夠進(jìn)一步發(fā)送數(shù)據(jù)。

在相關(guān)套接口的選項(xiàng)之上,還可通過標(biāo)志位flag來影響函數(shù)的執(zhí)行方式。也就是說,本函數(shù)的語義既取決于套接口的選項(xiàng)也取決于標(biāo)志位。后者由以下一些值組成:

值意義

MSG_DONTROUTE 指明數(shù)據(jù)不選徑。一個(gè)WINDOWS套接口供應(yīng)商可以忽略此標(biāo)志;MSG_OOB 發(fā)送帶外數(shù)據(jù)(僅適用于SO_STREAM;)。

返回值

若無錯誤發(fā)生,send()返回所發(fā)送數(shù)據(jù)的總數(shù)(請注意這個(gè)數(shù)字可能小于len中所規(guī)定的大?。?。否則的話,返回SOCKET_ERROR錯誤, 應(yīng)用程序可通過WSAGetLastError()獲取相應(yīng) 錯誤代碼。

錯誤代碼:

WSANOTINITIALISED:在使用此API之前應(yīng)首先成功地調(diào)用WSAStartup()。

WSAENETDOWN:WINDOWS 套接口實(shí)現(xiàn)檢測到網(wǎng)絡(luò)子系統(tǒng)失效。

WSAEACESS:要求地址為廣播地址,但相關(guān)標(biāo)志未能正確設(shè)置。

WSAEINTR:通過一個(gè) WSACancelBlockingCall()來取消一個(gè)(阻塞的)調(diào)用。

WSAEINPROGRESS:一個(gè)阻塞的WINDOWS套接口調(diào)用正在運(yùn)行中。

WSAEFAULT:buf參數(shù)不在用戶 地址空間中的有效位置。

WSAENETRESET:由于WINDOWS套接口實(shí)現(xiàn)放棄了連接,故該連接必需被復(fù)位。

WSAENOBUFS:WINDOWS套接口實(shí)現(xiàn)報(bào)告一個(gè) 緩沖區(qū) 死鎖。

WSAENOTCONN:套接口未被連接。

WSAENOTSOCK:描述字不是一個(gè)套接口。

WSAEOPNOTSUPP:已設(shè)置了MSG_OOB,但套接口非SOCK_STREAM類型。

WSAESHUTDOWN:套接口已被關(guān)閉。一個(gè)套接口以1或2的how參數(shù)調(diào)用 shutdown()關(guān)閉后,無法再用send()函數(shù)。

WSAEWOULDBLOCK:

WSAEMSGSIZE:套接口為 SOCK_DGRAM類型,且數(shù)據(jù)報(bào)大于WINDOWS套接口實(shí)現(xiàn)所支持的最大值。

WSAEINVAL:套接口未用 bind()捆綁。

WSAECONNABORTED:由于超時(shí)或其他原因引起虛電路的中斷。

WSAECONNRESET:虛電路被遠(yuǎn)端復(fù)位。

send(clientsocket,(char*)&b,sizeof(b),0)

你問的是兩個(gè)問題

第一個(gè)問題,send函數(shù)中第4個(gè)參數(shù)的含義,send函數(shù)原型

int PASCAL FAR send( SOCKET s, const char FAR* buf, int len, int

flags);

s:一個(gè)用于標(biāo)識已連接套接口的描述字。

buf:包含待發(fā)送數(shù)據(jù)的緩沖區(qū)。

len:緩沖區(qū)中數(shù)據(jù)的長度。

flags:調(diào)用執(zhí)行方式。

flags可以為0、MSG_DONTROUTE或者M(jìn)SG_OOB

0 :表示無特殊行為

MSG_DONTROUTE :指明數(shù)據(jù)不選徑,一個(gè)WINDOWS套接口供應(yīng)商可以忽略此標(biāo)志

MSG_OOB : 發(fā)送帶外數(shù)據(jù)(僅適用于SO_STREAM)

第二個(gè)問題,send函數(shù)返回值

因?yàn)閟end函數(shù)發(fā)送失敗時(shí)返回SOCKET_ERROR

SOCKET_ERROR宏定義為#define SOCKET_ERROR (-1)

所以該語句是判斷發(fā)送是否失敗。

文章標(biāo)題:c語言中send函數(shù) c++ send函數(shù)
分享路徑:http://www.muchs.cn/article20/doeepco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作微信公眾號、手機(jī)網(wǎng)站建設(shè)網(wǎng)站排名、網(wǎng)站改版、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)