我在做一个聊天软件,用到了有关套接字的知识。我给侦听创建了一个类,想用于建立侦听套接字,但是我不知道套接字具体的一个东西是怎么样的、在哪里,我看不到套接字。谁能给我个答案?

解决方案 »

  1.   

    你看的应该是别人封装过的类
    完整的代码参考
    http://www.vckbase.com/code/listcode.asp?mclsid=9
      

  2.   

    我想知道套接字在哪里被创建了,是不是CAsyncSocket这个基类里面就已经给创建了?
      

  3.   

    CAsyncSocket这个基类里面创建了,如果想要了解更底层的知识,建议去查查这方面的windows API
      

  4.   

    CAsyncSocket  里的 creat不就创建? 底层的东西不都在这个函数里实现了
      

  5.   

    套接字就相当于服务器和客户端的连接的媒介,,,
    服务器和客户端通过套接字来进行通信,,SOCKET s; //声明套接字
    s=socket(PF_INET,SOCK_STREAM,0);    //创建套接字s,类型为SOCK_STREAM,一般用来实现TCP通信这里的s就是套接字了,,
      

  6.   

    MFC封装了CSocket
    用它创建服务器的一般代码为m_pSocketServer = new CSocket(GetSafeHwnd());
    if(!m_pSocketServer->Create(m_nPort, SOCK_STREAM, GetLocalIPAdress()))//tcp形式
    {
    delete m_pSocketServer;
    m_pSocketServer = NULL;
    return;
    }
    m_pSocketServer->Bind(m_nPort, GetLocalIPAdress());//端口绑定
    m_pSocketServer->Listen();//设置监听很简单
      

  7.   

    这样的还是自己写吧,程序脉络比较清楚
    WSAStartup();//初始化socket

    SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP0);
    if(INVALID_SOCKET == s)
    {
     // 失败
    }
    SOCKADDR_IN addr;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(...);
    addr.sin_addr.S_un.S_addr = inet_addr("...");
    if(SOCKET_ERROR == bind(s, (LPSOCKADDR)&addr, sizeof(addr))
    {
     // 绑定socket失败
    }
    if(SOCKET_ERROR == listen(s, 5))
    {
    // 监听socket失败
    }
    SOCKADDR_IN from;
    int len = sizeof(from);
    while(TRUE)
    {
    ...
     SOCKET sNew = accept(s, (LPSOCKADDR)&from, &len);
     if(INVALID_SOCKET == sNew)
     {
      // 出错
     }
     ...
     send(sNew, ...);
     recv(sNew, ...);
    }closescoket(s);
    WSACleanup();
      

  8.   

    WSAStartup();//初始化socket

    SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP0);
    if(INVALID_SOCKET == s)
    {
     // 失败
    }
    SOCKADDR_IN addr;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(...);
    addr.sin_addr.S_un.S_addr = inet_addr("...");
    if(SOCKET_ERROR == bind(s, (LPSOCKADDR)&addr, sizeof(addr))
    {
     // 绑定socket失败
    }
    if(SOCKET_ERROR == listen(s, 5))
    {
    // 监听socket失败
    }
    SOCKADDR_IN from;
    int len = sizeof(from);
    while(TRUE)
    {
    ...
     SOCKET sNew = accept(s, (LPSOCKADDR)&from, &len);
     if(INVALID_SOCKET == sNew)
     {
      // 出错
     }
     ...
     send(sNew, ...);
     recv(sNew, ...);
    }closescoket(s);
    WSACleanup();