2017-10-22 1 views
3

ブラウザでjavascript経由でUDPソケットを開くことはできますか?UDPソケットブラウザでのJavaScriptの使用

私はwebsocketがTCPだけを使用していることを知っています。ブラウザでUDPを使用する唯一のものはWebRTCです。

他の方法はありますか? WebAssemblyを使用してUDPソケットを使用するC++をコンパイルできますか?

私はWebAssemblyにこのコードをコンパイルしようとしません:

int main(int argc, char *argv[]) 
{ 
//initialize socket and structure 
int socket_info; 
struct sockaddr_in server; 
char message[100]; 
char incoming_message[100]; 

printf("Input Message: "); 
fgets(message, 100, stdin); 

    //create socket 
    socket_info = socket(AF_INET, SOCK_DGRAM, 0); 
    if (socket_info == -1) { 
    printf("Could not create socket"); 
    } 

//assign local values 
    server.sin_addr.s_addr = inet_addr("172.21.8.178"); 
    server.sin_family = AF_INET; 
    server.sin_port = htons(1100); 

    //binds connection 
    if (bind(socket_info, (struct sockaddr *)&server, sizeof(server)) < 0) {  
perror("Connection error"); 
     return 1; 
    } 
    puts("Bind"); 

    //assign new value to connect to 
    server.sin_addr.s_addr = inet_addr("192.118.68.1"); 

    //checks connection 
    if (connect(socket_info, (struct sockaddr *)&server, sizeof(server)) <  0) { 
    perror("Connection error"); 
     return 1; 
    } 
    puts("Connected"); 

    //sends message 
if(send(socket_info, message, strlen(message), 0) <0) {   
perror("Send failed"); 
    return 1; 
    } 
    puts("Message Sent"); 

//receives message back  
if(recv(socket_info, incoming_message, sizeof(incoming_message), 0) <0) {  
puts("Received failed"); 
    return 1; 
    } 
    puts("Message received"); 
    puts(incoming_message); 

close(socket_info); 

} 

ませ運を。 :(

答えて

4

いいえ、ブラウザは、UDPをサポートしていません。また、WebAssemblyは、通信のための任意のAPIを持っていません - 。。あなたはWebAssemblyモジュールにJavaScript関数を露出することによってこれをしなければならないであろう任意のネットワークAPIにアクセスするために

あなたの唯一の選択肢は、あなたのUDPメッセージをWebSocketに適合させることだと思います。Kaazingゲートウェイ(https://kaazing.com/)のような市販の製品があります。オープンソースの代替品があるかもしれません。

関連する問題