我写了一个C/S   结构的   程序   ,程序同时   是一个独立的服务器和客户端   ,在ListenSock   中为其注册   FD_ACCEPT   和   FD_CLOSE   ,并且WSAAyncselect   调用成功   (返回值非   SOCKET_ERROR)  
然后在MM_SOCKET   (注册消息)   中   处理   FD_ACCEPT   (有错误处理语句)  
如果有事件到达,就弹出对话框询问是否接受连接.

如果允许就调用   Accept   接受连接


然后   在同一个电脑上运行两个实例,一个监视1023,一个监视   1024   端口,在其中一个,连接本地另一个实例,
没想到的事另一个实例没有弹出对话框这个程序就报告连接成功   .  

而且netstat   -ano   也显示出双向的连接   !!     太难以置信了.


Active   Connections

    Proto     Local   Address                     Foreign   Address                 State                       PID
   
    TCP         0.0.0.0:1023                       0.0.0.0:0                             LISTENING               1492
    TCP         0.0.0.0:1024                       0.0.0.0:0                             LISTENING               3208
    TCP         127.0.0.1:1023                   127.0.0.1:3211                   ESTABLISHED           1492
    TCP         127.0.0.1:3211                   127.0.0.1:1023                   ESTABLISHED           3208
   
   

没有弹出对话框就意味着没有调用Accept   函数   ,怎么可能连接成功!!

(   两个   套接字   都是   SOCK_STREAM   ,   不是UDP   !!)  


另外我用两台机子测试时,也是同样的问题,在A上连接B,A提示连接成功 ,并启动两个线程。
而B无任何提示,并且也不启动线程  (我在程序中设置,每当接受一个连接时和连接远程电脑成功时,都启动两个线程)

但用netstat -ano 同样显示出双向的连接!! (两台机子上都是)

暂不说异步时, 所有尝试的连接一般都会返回SOCKET_ERROR (WSAGetLastError 返回WSAEWOULDBLOCK),  就服务器不调用accept 这一点连接也不可能建立呀!