简单的问题:
我现做一个网络方面的小东西,
在SOCKET套接字LISTEN()后,整个界面都不响应了,
请问要如何修改?先谢了!
比较急!

解决方案 »

  1.   

    AfxBeginThread()这个函数就可以啦,具体你可以在msdn上面查一下,当然也可以使用CWinThread来派生
      

  2.   

    在对Socket进行Bind之前,先调用WSAAsyncSelect使Socket工作在异步状态就可以了
      

  3.   

    _beginthread()谁用过啊?告诉我怎么写?
    因为写的时候都说第一个参数不对
      

  4.   

    不可能 ,listen本来就是一个线程啊,怎么会界面不响应.
      

  5.   

    同意chen_jun_fen(bitwise),肯定是其它出错。主要代码、你怀疑出错的代码帖出来看看!_beginthread()函数你怎么用的拿出来看看,这样才能更方便的帮你
      

  6.   

    CTcpIpSocket RecvSocket;
    SOCKET ListenSocket;
    ListenSocket= RecvSocket.FunInitSocket();
    //监听
    RecvSocket.FunListen(ListenSocket,FILE_PORT);
    //CTcpIpSocket为自己建的类,FunInitSocket()和FunListen(ListenSocket,FILE_PORT)都为类内部函数
    FunListen(ListenSocket,FILE_PORT)内部调用了bind(),和listen()
    就这样啊
      

  7.   

    FunListen(ListenSocket,FILE_PORT)内部调用了bind(),和listen():它的简要代码帖出来,你就贴上面的,谁知道错在那里?
      

  8.   

    不是Listen本身的问题,肯定问题出在其他地方,
      

  9.   

    没有响应,肯定内部哪个函数导致完全占用cpu资源但问题不在于listen()
      

  10.   

    SOCKET CTcpIpSocket::FunListen(const SOCKET ListenSocket,u_short port)
    {
    SOCKADDR_IN TcpServer; TcpServer.sin_family = AF_INET;
    TcpServer.sin_port = htons(port);
    TcpServer.sin_addr.s_addr = htonl(INADDR_ANY);

    if(bind(ListenSocket,(SOCKADDR *)&TcpServer,sizeof(TcpServer)) < 0)
    {
    ::MessageBox(NULL,"TCP 绑定socket失败!",TEXT("消息"),MB_OK|MB_TASKMODAL);
    return SOCKET_ERROR;
    }

    if(listen(ListenSocket,1) != 0)
    {
    ::MessageBox(NULL,"TCP 侦听socket失败!",TEXT("消息"),MB_OK|MB_TASKMODAL);
    return SOCKET_ERROR;
    } return ListenSocket;
    }
    这个 就是FunListen()拉
      

  11.   

    if(listen(ListenSocket,1) != 0)
    {
    ::MessageBox(NULL,"TCP 侦听socket失败!",TEXT("消息"),MB_OK|MB_TASKMODAL);
    return SOCKET_ERROR;
    }
    改成listen(ListenSocket,1);看看
      

  12.   

    实际上不是listen导致界面不响应,是因为accept才被阻塞的。
    应该通过线程的方法进行解决:DWORD WINAPI yourAccept(PVOID pParam)
    {
      //通过传入的参数获得你listen的套接字
      //accept
      //如果accept成功,则PostMessage给你的主线程
    }在主线程中:
      //listen(...)
      //CreateThread(...,yourAccept,pParam,...)
      
      //加入对消息的响应:ON_MESSAGE_MAP里面ON_COMMAND(WM_YOURMSG, yourProcess)
      //afxmsg DWORD yourAPI(PVOID)
      

  13.   

    呵呵,他的accept代码又看不到!
      

  14.   

    在OnAccept里面相应你的YourAccept
    在OnReceive里面相应你的YourReceive
    或者你可用网络选择事件的方法来解决