函數(shù)功能:
接收客戶端或服務(wù)端傳來的數(shù)據(jù),也就是客戶端和服務(wù)端都要用到
頭文件:
#include <winsock2.h>
函數(shù)原型:
int recv(int aID, char *buf, int len, int flags);
返回值類型:
整型
返回值:
返回值小于0,socket報(bào)錯。返回值等于0沒有接收到數(shù)據(jù),返回值大于0成功,返回值即為接收到的數(shù)據(jù)長度
參數(shù)說明:
第一個(gè)參數(shù)aID,表示連接成功的套接字描述符。
注意:這一步對于服務(wù)端而言是上一步accept的返回值;對于客戶端而言是connect的返回值,并非是第一步socket創(chuàng)建套接字的返回值,請大家理解不要搞混!
第二個(gè)參數(shù)buf,就是為要接收的數(shù)據(jù)所在的緩沖區(qū)地址,也就是一個(gè)空的字符數(shù)組的首地址,這里放結(jié)果。
第三個(gè)參數(shù)len為要接收數(shù)據(jù)的字節(jié)數(shù)。
第四個(gè)參數(shù)flags為發(fā)送數(shù)據(jù)時(shí)的附帶標(biāo)記 ,一般情況下設(shè)置為0。但可以選擇下列設(shè)置:
MSG_DONTROUTE:表示不使用指定路由,對send、sendto有效
MSG_PEEK:對recv, recvfrom有效,表示讀出網(wǎng)絡(luò)數(shù)據(jù)后不清除已讀的數(shù)據(jù)
MSG_OOB:對發(fā)送接收都有效,表示發(fā)送或接受加急數(shù)據(jù)
調(diào)用recv函數(shù)整體代碼的實(shí)現(xiàn):
char recBuf[200];//定義一個(gè)字符串用來保存客戶端發(fā)來的數(shù)據(jù) recv(aID,recBuf,200,0);//接收來自客戶端或服務(wù)端的數(shù)據(jù)
需要注意的是,recv缺省是阻塞函數(shù),直到收到信息或出錯才會返回。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程