1

チームメイトがソケットを介して私に接続する必要がある学生プロジェクトがあります。HTML5 Web ページを実行しており、それとは別に Socket.IO サーバーを作成しています。彼は、ソケットを介して私の Web ページに送信する必要がある RFID をスキャンする C++ プログラムを実行しています。私たちは彼の側からつながりを作るのに苦労しています。彼が C++ で私の websocket に接続する方法はありますか?

インクルードなしで彼のすべてのコードをコピーしています(C ++プログラマーではないため)

int main(array<System::String ^> ^args)
{
        array<System::String ^>^ dataArray = gcnew array<System::String ^>(51);
        Socket^ aarsServer = gcnew Socket(AddressFamily::InterNetwork, SocketType::Stream, ProtocolType::Tcp);
        array<unsigned char>^ MSG = gcnew array<unsigned char>(1024);
        int a;
        String ^dataAux;// ^dataSend;

        SerialPort^ arduino;
        arduino = gcnew SerialPort("COM4", 2400);
        arduino->ReadTimeout = 1000;

        for(int b=0;b<50;b++)
                dataArray[b]="1234569877";

        while(1)
        {    
                a=0;
                try{
/*  //LEITURA COM TIMEOUT
                arduino->Open();
                dataAux="";
                arduino->DiscardOutBuffer();
                dataAux = arduino->ReadLine();
                arduino->Close();

*/ 
                ////////BLOKO GRANDE//////////////////////      
                if(dataAux!="")
                        {
                                while(a<50)
                                        {
                                                //PROCURAR ESPACO FREE E BUFFERIZR
                                                if(dataArray[a]=="")
                                                        break;
                                                        a++;
                                        }
                                dataArray[a]=dataAux;


            try{
                        //TENTAR ESTABELER, ENVIAR EM REALTIME E LIMPAR O BUFFER
                IPEndPoint^ iped = gcnew IPEndPoint(IPAddress::Parse("192.168.10.2"), 8765);//Server IP
        aarsServer->Connect(iped);
                 //int rcv = aarsServer->Receive(MSG);
                //dataSend="1, " + dataAux + ", 155.238.44.55";
                MSG = Encoding::ASCII->GetBytes("1," + dataArray[a] + ",192.168.10.1");//device IP
                aarsServer->Send(MSG, MSG->Length, SocketFlags::None);
                aarsServer->Shutdown(SocketShutdown::Both);
                aarsServer->Close();
                dataArray[a]="";
                }

                catch (SocketException^ BB)
    {
        Console::WriteLine("Connection Failed with error: {0}", BB->Message);

    }
        ////////BLOKO GRANDE//////////////////////  ///////////////////////////
                }
                }

                catch (TimeoutException ^AA)
                {
                arduino->Close();

                }
                ////////BLOKO PEKENO//////////////////////      

            try{
                        //TENTAR ESTABELER, ENVIAR EM OFFLINE TUDO E LIMPAR O BUFFER
                IPEndPoint^ iped = gcnew IPEndPoint(IPAddress::Parse("192.168.10.2"), 8765);//Server IP
        aarsServer->Connect(iped);
                 //int rcv = aarsServer->Receive(MSG);
                //dataSend="1, " + dataAux + ", 155.238.44.55";
                for(int c=0; c<50; c++)
                {
                        if(dataArray[c]!="")
                        {
                                MSG = Encoding::ASCII->GetBytes("0," + dataArray[a] + ",192.168.10.1");//device IP
                                aarsServer->Send(MSG, MSG->Length, SocketFlags::None);
                                dataArray[c]="";
                        }
                }
                aarsServer->Shutdown(SocketShutdown::Both);
                aarsServer->Close();

                }

                catch (SocketException^ BB)
    {
        Console::WriteLine("Connection Failed with error: {0}", BB->Message);

    }
        ////////BLOKO PEKENO//////////////////////  ///////////////////////////



        }
}
4

1 に答える 1

1

C ++でWebSocketを使用する場合は、C++WebSocketライブラリの使用を検討する必要があります。このウィキペディアのページにそれらのリストがあります。

以前、 libwebsocketsを使用してHTML5アプリケーションをC++アプリケーションに接続しました。ライブラリには、サンプルのクライアントコードとサーバーコードがここに付属しています。

于 2012-11-06T19:02:53.153 に答える