2013-09-29 47 views
0

我試圖在qt中創建套接字,我使用的代碼如下。在qt中,標準「連接」與用於信號插槽連接的「連接」發生衝突。如何解決此問題。在Qt中創建套接字

int sock_Desc = 0; 
    if (proxy_port == 0) 
    { 
      proxy_port = 3773; 
    } 
    sock_Desc = socket(AF_INET, SOCK_STREAM, 0); 
    struct sockaddr_in server; 
    server.sin_addr.s_addr = inet_addr(127.0.0.1); 
    server.sin_family  = AF_INET; 
    server.sin_port   = htons(proxy_port); 
    connect(sock_Desc, (struct sockaddr *)&server, sizeof(server)); 
    int rc = 0; 
    if ((option & 1) == 0) 
    { 
      if(send(sock_Desc, message, strlen(message), 0) < 0) { 

        close(sock_Desc); 
           } 
      if ((option & 2) == 2) 
      { 
        rc = recv(sock_Desc, rcv_Msg, 512, 0); 
        if (rc == 0)  { 
          close(sock_Desc); 
        } 

        if (rc < 0)   { 

          close(sock_Desc); 
       } 
      } 
    } else { 
      if(option & 2 == 2) 
      { 
        rc = system(message); 
      }    } 
    } 

    close(sock_Desc); 

}

+2

如果這是Qt,爲什麼我看不到任何Qt代碼?你爲什麼不簡單地使用Qt套接字,即QTcpSocket? – leemes

+0

我想這個代碼與qt代碼。 – Shewzan

回答

2

從插座頭(sys/socket.h在Linux上)的功能connect是在全局命名空間,因爲它是一個C頭文件。您可以通過編寫明確地引用全局命名空間

::connect(sock_Desc, (struct sockaddr *)&server, sizeof(server));