int sendto(SOCKET S,const char FAR *buf,int len,int flags,const char FAR *to,int tolen) int recvfrom(SOCKET S,const char FAR *buf,int len,int flags,const char FAR *from,int * fromlen)疑問一:兩個函數(shù)中的len是指緩沖區(qū)大小還是程序員要求的一次收發(fā)的字節(jié)數(shù)。如緩沖區(qū)大小為buf[1024],len=40行不行。(主要是以會看到說是發(fā)送字節(jié)數(shù),一會又是緩沖區(qū)大小,把我搞暈了?。。┮蓡柖旱诹鶄€參數(shù)拿來干嘛?我知道sendto中to是指明目的端的套接字地址,tolen是套接字地址的大?。ㄓ械牡胤接终f是目的端接收緩沖區(qū)大小,混亂),但tolen拿來有什么用?還有為什么recvfrom中第六個參數(shù)還要用指針,跟sendto還不一樣??
1 回答

慕仙森
TA貢獻1827條經(jīng)驗 獲得超8個贊
1、len是指緩沖區(qū)大小,就是第二個參數(shù)的長度。
Length of the data in buf, in bytes.
2、sendto中的是目的套接字結(jié)構(gòu)的尺寸,只是標識一下to的結(jié)構(gòu)所占的長度,
主要是因為弱類型char*需要長度,目標并不關(guān)心必須是否sockaddr_in結(jié)構(gòu)。
指針的形式,是為了獲取目標套接字地址的尺寸,也是為了能夠進行弱類型解析。
協(xié)議本身是不限定必須使用sockaddr_in結(jié)構(gòu)的,但是windows編程中一般都是用sockaddr_in
添加回答
舉報
0/150
提交
取消