服务程序在公网上面!有固定IP地址比如:218.61.146.178
客户端程序用拨号上网或者是其他的一些方式上网像什么代理服务器之流的方式
在程序运行的时候输入IP地址218.61.146.178连接不上!
这样的问题应该怎么解决呢?

解决方案 »

  1.   

    烂代码一堆
    memset((void *)&m_RmtAddr, 0, sizeof(m_RmtAddr)); 
    m_RmtAddr.sin_family = AF_INET; 
    m_RmtAddr.sin_port = htons(9201); 
    m_RmtAddr.sin_addr.s_addr = inet_addr("202.108.42.109");//10.0.0.172 m_sock = socket(AF_INET, SOCK_DGRAM, 0); 
    if(m_sock == INVALID_SOCKET) 
    return 1; memset((void *)&m_LclAddr, 0, sizeof(m_LclAddr)); 
    m_LclAddr.sin_family = AF_INET; 
    m_LclAddr.sin_port = htons(9201); 
    m_LclAddr.sin_addr.s_addr = INADDR_ANY; if(bind(m_sock, (struct sockaddr *)&m_LclAddr, sizeof(m_LclAddr)) < 0) 
    return 1; int ret = connect(m_sock, (struct sockaddr *)&m_RmtAddr, sizeof(m_RmtAddr)); 
    int error = WSAGetLastError(); unsigned char outbuf[500] = "\0";//changed value to accomadate more in the buffer 
    int i = 0; outbuf[i++] = 0x01; // Transaction ID 
    outbuf[i++] = 0x40; // WSP_PDU_GET; if(send(m_sock, (const char *)outbuf, i, 0) < 0) 
    return 1; // setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (const char*)&rcvbuflen, sizeof(rcvbuflen)); 
    ioctlsocket(sock, FIONBIO, &arg); 
    // ret = recvfrom(sock, buf, buflen, 0, (struct sockaddr *)&m_RmtAddr, &len); 
    ret = recv(m_sock, buf, 1, 0); 
    error = WSAGetLastError(); 
    if (ret <= 0) { 
    return 1; 

    // close socket if needed 
    if (sock >= 0) 
    closesocket(sock); 
      

  2.   

    m_RmtAddr.sin_addr.s_addr = inet_addr("202.108.42.109");//10.0.0.172 这个注释是什么意思?
      

  3.   

    一边是固定IP另一边是拨号上网的ip,有时候能ping通,有时候ping不通!