Tsocket 阻塞方式疑问
我在delphi用了Tsocket做服务器端通讯端口 ,它默认是阻塞方式,可是为什么阻塞不好用呢,接受一次连接后阻塞就不好用了呢,程序代码如下:
wVersionRequested:=MAKEWORD(2,2);
erro:=WSAStartup(wVersionRequested,wsd);
if erro<>0 then
WSACleanup;
if (LOBYTE(wsd.wVersion)<>2) then
WSACleanup;
if(HIBYTE(wsd.wVersion)<>2) then
WSACleanup;
V_CONN_ID := socket(AF_INET,SOCK_STREAM,0);
cmd:=0;
rtn:=ioctlsocket(V_CONN_ID,FIONBIO,cmd);
if(rtn<>0) then
exit;
if(V_CONN_ID=INVALID_SOCKET) then
exit;
ZeroMemory(@m_rcvaddr,sizeof(m_rcvaddr));
ZeroMemory(@m_acceptaddr,sizeof(m_acceptaddr));
m_rcvaddr.sin_family := PF_INET;
m_rcvaddr.sin_addr.s_addr := INADDR_ANY;
m_rcvaddr.sin_port := htons(strtoint(form1.listen_port));
rtn:=bind(V_CONN_ID,m_rcvaddr,sizeof(m_rcvaddr));
if(rtn<>0) then
exit;
rtn:=listen(V_CONN_ID,1);
if(rtn<>0) then
exit;
while (not form1.rec_stop_flag ) do
begin
V_ACCEPT_ID:=accept(V_CONN_ID,m_acceptaddr,@m_accept_len);//???????
end;