在accept的时候是有地址参数的啊。

解决方案 »

  1.   

    SOCKADDR_IN addr ;
    addr.family = AF_INET ;
    int len = sizeof( addr ) ;
    accept( s , (SOCKADDR*) &addr , &len ); 
      

  2.   

    getsockname()
    inet_ntoa()
    看看这两个函数就行了。
      

  3.   

    s=accept(...)
    对此s进行inet_ntoa
      

  4.   

    套节字服务端,在响应FD_ACCEPT消息时用数据容器保存ACCEPT()函数返回的每一个套节字,以后消息的WPARAM 即是表示应相应当前消息的套节字,用一个循环比较,得到相应使用的套节字.
    同样,在ACCEPT()函数中的第二个参数可获得连接套节字端的sockaddr,使用inet_ntoa()可得IP。
      

  5.   

    你是不是只想区分来自不同client的信息
    accept时新建的socket是不同的,根据此既可区分。
      

  6.   

    to sunny7516huang(蜀山剑侠):WPARAM 从哪儿来?
      

  7.   

    当用一个socket server用来监听时,响应一个客户的请求需要另一个socket client,
    client = accept(server,...);
    这样对于每一个连接,都有唯一的一个client,包含客户信息。
      

  8.   

    同意楼上
    每一个连接,都有唯一的一个client,包含客户信息!
    你可以写两个类,一个侦听(CListenSocket),一个负责工作(CWorkSocket)!
    CListenSocket *pListenSocket;
    CWorkSocket   *pWorkSocket;
    ....
    if(pListenSocket->Accept(*pWorkSocket))
    {
    CString szAddress;
    UINT uPort; pSocket->GetPeerName(szAddress, uPort);
    }
      

  9.   

    同意楼上
    每一个连接,都有唯一的一个client,包含客户信息!
    你可以写两个类,一个侦听(CListenSocket),一个负责工作(CWorkSocket)!
    CListenSocket *pListenSocket;
    CWorkSocket   *pWorkSocket;
    ....
    if(pListenSocket->Accept(*pWorkSocket))
    {
    CString szAddress;
    UINT uPort; pWorkSocket->GetPeerName(szAddress, uPort);
    }
    就可以得到IP地址和断口号!至于多个Client,你接受一个就把这个Client作个标记不就行了!