2016-12-21 12 views
0

私はCでソケットを実現するアプリケーションを持っています。私はC++とQtには慣れていますが、QtでCとC++の両方を実行できますか?C++のグラフィックアプリケーションとC++のコード** Qtプログラミング**

コードからサンプルがCであるがあります:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <unistd.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h> 

#define PORT 9600 

int main(int argc, char *argv[]){ 
    int sock_cnx; /* Socket pour ouverture de connexion */ 

    struct sockaddr_in serveraddr; 
    struct sockaddr_in clientaddr; 

    int newfd; 
    char buf[1024]; 
    int nbytes; 
    int addrlen; 
    int i, j; 

    /* Ensemble des descripteurs qu’on souhaite surveiller en lecture */ 
    fd_set surveil_fds; 

    /* Ensemble des descripteurs qu’on va utiliser dans SELECT */ 
    fd_set read_fds; 

    /* Memorise le plus grand descripteur : a utiliser dans SELECT*/ 
    int fdmax; 

    addrlen = sizeof(clientaddr); 

    /* Ouverture de la socket du serveur */ 
    if ((sock_cnx = socket(AF_INET,SOCK_DGRAM,0)) == -1){ 
     perror("Erreur socket"); 
     exit(1); 
    } 

    bzero(&serveraddr, sizeof(serveraddr)); 

    serveraddr.sin_family = AF_INET; 
    serveraddr.sin_port = htons(PORT); 
    serveraddr.sin_addr.s_addr = htonl (INADDR_ANY); 

    bzero(&(serveraddr.sin_zero), 8); 

    /* Bind */ 
    if (bind(sock_cnx, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) == -1) { 
     perror("Erreur Bind"); 
     exit(1); 
    } 
    ........ 
    return 0; 
} 

私はすでにQtの上のアプリのための私のインターフェイスを作成しました。

extern "C" { 
#include "myCHeaderFile.h 
} /* extern "C" */ 

あなたは単にあなたのC++/Qtのファイル内のC-機能にアクセスすることができますよりも、次のように

+0

Qtには[ソケットのサポート](http://doc.qt.io/qt-5/qtcpsocket.html)もありますので、既にQtアプリケーションをお持ちの方はこれを使用することをお勧めします。 1つの利点は、信号を使用して着信データを処理できることです。 –

答えて

0

あなたの中にはQt/C++アプリケーション、あなたはあなたのC-ファイルを含めることができます。

+0

さて、私はそれをテストします。 –

+0

完璧に働いて、ありがとう。 これで、Windows用の適切なソケットライブラリを使用する必要があります。 –

関連する問題