功能描述:
傳送訊息。send只可用於基於連線的套接字,send 和 write唯一的不同點是標誌的存在,當標誌為0時,send等同於write。sendto 和 sendmsg既可用於無連線的套接字,也可用於基於連線的套接字。除了套接字設定為非阻塞模式,呼叫將會阻塞直到資料被傳送完。
用法:
#include
#include
ssize_t send(int sock, const void *buf, size_t len, int flags);
ssize_t sendto(int sock, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
ssize_t sendmsg(int sock, const struct msghdr *msg, int flags);
引數:
sock:索引將要從其傳送資料的套接字。
buf:指向將要傳送資料的緩衝區。
len:以上緩衝區的長度。
flags:是以下零個或者多個標誌的組合體,可通過or操作連在一起
msg_dontroute:不要使用閘道器來傳送封包,只傳送到直接聯網的主機。這個標誌主要用於診斷或者路由程式。
msg_dontwait:操作不會被阻塞。
msg_eor:終止乙個記錄。
msg_more:呼叫者有更多的資料需要傳送。
msg_nosignal:當另一端終止連線時,請求在基於流的錯誤套接字上不要傳送sigpipe訊號。
msg_oob:傳送out-of-band資料(需要優先處理的資料),同時現行協議必須支援此種操作。
to:指向存放接收端位址的區域,可以為null。
tolen:以上記憶體區的長度,可以為0。
msg:指向存放傳送訊息頭的記憶體緩衝,結構形態如下
struct msghdr ;
可能用到的資料結構有
struct cmsghdr ;
返回說明:
成功執行時,返回已傳送的位元組數。失敗返回-1,errno被設為以下的某個值
eacces:對於unix域套接字,不允許對目標套接字檔案進行寫,或者路徑前驅的乙個目錄節點不可搜尋
eagain,ewouldblock: 套接字已標記為非阻塞,而傳送操作被阻塞
ebadf:sock不是有效的描述詞
econnreset:連線被使用者重置
edestaddrreq:套接字不處於連線模式,沒有指定對端位址
efault:記憶體空間訪問出錯
eintr:操作被訊號中斷
einval:引數無效
eisconn:基於連線的套接字已被連線上,同時指定接收物件
emsgsize:訊息太大
enomem:記憶體不足
enotconn:套接字尚未連線,目標沒有給出
enotsock:sock索引的不是套接字
epipe:本地連線已關閉
wglUseFontBitmaps函式解釋
函式原型 bool winapi wglusefontbitmaps hdc hdc,dword first,dword count,dword listbase 可以使用wglusefontbitmaps函式來批量的產生顯示字元用的顯示列表。函式有四個引數 第乙個引數是hdc,學過windows ...
RPAD函式略解
在寫本篇部落格之前,有一點小東西要寫在前面,漢字佔多少個位元組得看你用的是什麼編碼集,如果是gbk和gb2312的話,確實是兩個位元組,在windows平台上會是你預期的兩個位元組。但是在linux平台使用的是utf8字符集,那麼就不一定了,不過,我現在做plsql等東西一般是在win平台上做的,l...
Sql Server函式全解《二》數學函式
原文 sql server函式全解 二 數學函式 eg select abs 2 abs 3.3 abs 33 pi eg select rand rand rand 可以看到,不帶引數的rand 每次產生的隨即數值是不同的。eg select rand 10 rand 10 rand 11 可以看...