多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 網絡編程I/O函數介紹

網絡編程I/O函數介紹

來源:程序員人生   發布時間:2014-11-11 09:07:32 閱讀次數:2143次

read和write

#include <unistd.h> ssize_t read(int fd, void *buf, size_t count); ssize_t write(int fd, const void *buf, size_t count);

參數:

fd: 文件描寫符
buf:數據緩沖區,用于保存要從fd讀取或寫入的數據
count:輸入/寫入的數據最大字節數。(實際讀取或寫入的數據大小可能小于count)

返回值:
正常情況下返回讀取或寫入的真實的數據大小
返回0表示沒有數據被讀取到或寫入
⑴:函數調用毛病,errno值會被設置

readv和writev

#include <sys/uio.h> ssize_t readv(int fd, const struct iovec *iov, int iovcnt); ssize_t writev(int fd, const struct iovec *iov, int iovcnt);
根據iov預先制定的格式讀取或寫入數據。
相當于寫數據塊,并且可以制定數據塊的大小。
具體參考結構體struct iovec

send和recv

send和recv用于已建立連接的套接字通訊(UDP也有已連接的)
#include <sys/types.h> #include <sys/socket.h> ssize_t send(int sockfd, const void *buf, size_t len, int flags); ssize_t recv(int sockfd, void *buf, size_t len, int flags);
前面3個參數類似于read和write。

flags 參數有以下的選擇:
MSG_DONTROUTE 勿將數據路由出本地網絡
MSG_DONTWAIT 允許非阻塞操作(等價于使用O_NONBLOCK)
MSG_EOR 如果協議支持,此為記錄結束
MSG_OOB 如果協議支持,發送帶外數據
MSG_NOSIGNAL 制止向系統發送異常信息
返回值
成功則返回實際傳送出去的字符數,失敗返回-1,毛病緣由存于errno 中。

recvfrom和sendto

原型
#include <sys/types.h> #include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);
參數:
    前面3個參數與read/write的3個參數類似,分別表示文件描寫符,數據緩沖區,最大讀取/寫入的數據大小
    flags: 與send和recv1樣
    src_addr:數據報發送者的協議地址的套接字地址結構
    dest_addr:數據報要發送的目的地協議地址的套接字地址結構
    addrlen,前1個參數的大小
返回值:
    真正發送/接收的數據的大小

注意點:
    我們可以看到,sendto和recvfrom函數均含有1個跟對端地址相干的參數(src_addr, dest_addr),因此可以再沒有建立連接的網絡通訊(UDP)中使用。這里sockfd只需要通過socket()進行創建,而不1定需要connect()進行連接。(不需要不代表不能,后面進1步介紹)
    在1些時候,我們需要使用connect()為UDP通訊建立連接,(由于UDP是不可靠的,但我們卻想要將異步毛病返回)。這里的連接于TCP的連接時不1樣的。UDP的connect相當于TCP的connect的重載,它沒有3次握手的進程,更偏向于綁定的概念。UDPconnect()只是將套接字與IP地址進行連接綁定。
    使用有連接的UDP通訊時,我們1般不適用sendto和recvfrom,而使用send和recv等函數。如非要使用sendto和recvfrom,則src_addr,dest_addr,參數必須為NULL,len必須為0



recvmsg和sendmsg

#include <sys/types.h> #include <sys/socket.h> ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags); ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);
類似于readv和writev。參考msghdr結構體


筆記:

    如果套接口為SOCK_STREAM類型,并且遠端“優雅”地中斷了連接(發送端send后立即關閉套接字,還沒測試),那末recv()1個數據也不讀取,立即返回。如果立即被強迫中斷,那末recv()將以WSAECONNRESET毛病失敗返回。flags參數和套接字選項都會影響到網絡I/O函數的調用方式。
    
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品免费小视频 | yellow字幕网最新官网2019 | 最近中文字幕大全高清视频 | 色老成人精品视频在线观看 | 老司机午夜免费福利 | 久久综合欧美成人 | 最近最新高清中文字幕 | 欧美巨大另类极品videosbest | 久久国产精品视频一区 | 久久亚洲精品人成综合网 | 国产或人精品日本亚洲77美色 | 欧美午夜性刺激在线观看免费 | 亚洲视屏在线观看 | 日本视频中文字幕一区二区 | 2018高清国产一道国产 | 国产一区二区福利久久 | 日产毛片| 久久精品一区二区三区不卡牛牛 | 欧美激情一区二区三区在线 | 亚洲a级 | 国产三级视频在线 | 欧美成性色| 欧美性猛 | 成人国产免费 | 欧美日韩国产一区二区三区 | 欧美综合伊人久久 | 国产成人精品无缓存在线播放 | 日韩免费精品 | 国产色在线 | 亚洲 国产色综合久久无码有码 国产色综合一区二区三区 国产上床视频 | 男人久久天堂 | 欧美极品xxx | 国产欧美另类久久久品 | 与黑人女人做爰的真实感受 | ffee性xxⅹ另类老妇hd | 欧美色图校园春色 | 国产成人+综合亚洲+天堂 | 久久精品欧美日韩精品 | 亚洲精品免费在线观看 | 亚洲天码中字 | 日本欧美在线播放 | 亚洲视频免费 |