socket 中 accept函数的第三个参数什么意思??
Accept函数
从套接字接收连接,在Delphi中的引用声明如下:
function accept(s: TSocket; //套接字描述符,该套接字在被调用时,应处于监听状态
addr: PSockAddr; //返回参数,指向用来接收为通讯层所知的连接实体的地址指针
addrlen: PInteger//返回参数,指向存有addr地址长度的整数
): TSocket; stdcall;
我一开始做的时候,第三个参数没有初始化,因为上面介绍说它属于返回参数,相当于返回缓冲区:
var
ra: SOCKADDR_IN;
RecvSocket:=accept(sMainServer,@ra, @ires);
while true
begin
iNum := recv(RecvSocket, bSocketBuf, sizeof(bSocketBuf), 0);
end;
客户端发送65535个数据,结果iNum返回全部是-1,还出现错误
但改成这样就行了:
var
ra: SOCKADDR_IN;
ires := sizeof(Ra);
RecvSocket:=accept(sMainServer,@ra, @ires);
while true
begin
iNum := recv(RecvSocket, bSocketBuf, sizeof(bSocketBuf), 0);
end;
客户端发送65535个数据,iNum返回是:
11060
54475
0
0
0
请问这是怎么回事???????
[解决办法]
需要接收的长度
[解决办法]
随便查一个都有
http://zhidao.baidu.com/question/75973875.html?fr=qrl&cid=93&index=1&fr2=query