【问题标题】:UDP socket via JavaScript in a browser在浏览器中通过 JavaScript 进行 UDP 套接字
【发布时间】:2018-04-03 01:14:35
【问题描述】:

我可以在浏览器中通过 javascript 打开一个 UDP 套接字吗?

我知道 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);

}

运气不好。 :(

【问题讨论】:

    标签: javascript html sockets webrtc webassembly


    【解决方案1】:

    不,浏览器不支持 UDP。此外,WebAssembly 没有任何用于通信的 API - 要访问任何网络 API,您必须通过将 JavaScript 函数公开给 WebAssembly 模块来做到这一点。

    我认为你唯一的选择是让你的 UDP 消息适应 WebSocket。有商业产品可以做到这一点,例如 Kaazing 网关 (https://kaazing.com/),可能还有开源替代品。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 2016-05-14
      • 2013-04-28
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      相关资源
      最近更新 更多