在服务端用 抓包 软件分析一下数据

解决方案 »

  1.   

    客户端只做一次发送M服务端做了两次接受操作
      

  2.   

    可以上网下TCp的工具,进行测试服务端,看是客户端,还是服务端出现问题。
    看了下代码,服务端接收那里怎么写了这么多东西,可以写错了吧。接收数据而已,/***********************************************************
    ** 功能描述: 打开端口** 输出结果: BOOL TRUE:打开成功; FALSE:打开失败
    ************************************************************/
    BOOL CSocketTCP::Open(int nPort, int nServerPort, CString szServerIP)
    {
    m_bState = FALSE; //打开端口
    m_Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (m_Socket == INVALID_SOCKET)
    {
    return FALSE;
    } BOOL bReuseaddr = TRUE;
    if (setsockopt(m_Socket, SOL_SOCKET, SO_REUSEADDR, (const char*)&bReuseaddr, sizeof(BOOL)) == SOCKET_ERROR)
    {
    return FALSE;
    } //绑定地址
    SOCKADDR_IN addr;
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    addr.sin_port = htons((u_short)nPort); if (bind(m_Socket, (SOCKADDR*)&addr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
    {
    return FALSE;
    } //连接
    SOCKADDR_IN addrServer;
    addrServer.sin_family = AF_INET;
    addrServer.sin_addr.s_addr = inet_addr(szServerIP);
    addrServer.sin_port = htons((u_short)nServerPort); if (connect(m_Socket, (SOCKADDR*)&addrServer, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
    {
    return FALSE;
    } //注册事件
    if (WSAAsyncSelect(m_Socket, m_Hwnd, WM_NET_TCPCLOSE, FD_CLOSE) == SOCKET_ERROR)
    {
    return FALSE;
    } m_nPort = nPort; m_bState = TRUE; return TRUE;
    }上面给你一份代码,演示注册监听的FD_CLOSE的事件,接收的话,你可以注册接收的事件。通过消息来接收数据