第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在c++和node.js(服務(wù)器)之間建立套接字通信的困難

在c++和node.js(服務(wù)器)之間建立套接字通信的困難

函數(shù)式編程 2022-12-22 10:00:21
我嘗試在 C++ 和 node.js 服務(wù)器之間建立套接字通信。這是我的 index.js 代碼:'use strict';const express     = require('express');const app         = express();const serverHttp  = require('http').Server(app); const io = require('socket.io')(serverHttp);const port = 8081;io.on('connection', function (socket) {       socket.on('message', function (data) {        console.log("key received!!!" + data);    socket.emit('server', 'hello socket io');        console.log("sent server msg");    });});serverHttp.listen(port, function() {      console.log("init!!!");    });這是我編譯成功的 C++ 代碼:#include <stdio.h>#include <stdlib.h>#include <assert.h>#ifdef _WIN32#include <winsock2.h>#include <ws2tcpip.h>#else#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#endif#ifdef _WIN32#define close(sockdep) closesocket(sockdep)#define perror(errmsg) { fprintf(stderr, "%s: %d\n", (errmsg), WSAGetLastError()); }#endif#define net_assert(err, errmsg) { if ((err)) { perror(errmsg); assert(!(err)); } }#define SERVER "localhost"#define PORT 8081#define BLEN 128intmain(int argc, char *argv[]){  struct sockaddr_in server;  struct hostent *sp;  int sd;  int n;  char buf[BLEN];#ifdef _WIN32  int err;  WSADATA wsa;  extern int write();    err = WSAStartup(MAKEWORD(2,2), &wsa);  // winsock 2.2  net_assert(err, "sample client: WSAStartup");#endif  }  我的環(huán)境是 Mac,我正在使用 Xcode 來編譯 c++。我將節(jié)點連接node index.js到本地主機,還編譯并運行了 C++ 程序。但是,當(dāng)我打開 localhost:8081 時,我在控制臺中收到此錯誤:GET http://localhost:8081/ 404 (Not Found)        localhost/:1 Refused to load the image 'http://localhost:8081/favicon.ico' because it violates the following Content Security Policy directive: "default-src 'none'". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.            localhost/:1我對編程很陌生,如果你能澄清什么是錯的,我將不勝感激。我無法識別 C++ 中的發(fā)送和接收代碼在哪里,因為它與 JavaScript 有很大不同。那么,我怎樣才能構(gòu)建一個簡單的通信,我只想將一個數(shù)組從 C++ 發(fā)送到 index.js?
查看完整描述

1 回答

?
繁星淼淼

TA貢獻1775條經(jīng)驗 獲得超11個贊

您的方法無法工作,因為socket.io是一種定義為與其他 socket.io 客戶端或服務(wù)器一起使用的協(xié)議,而在 C++ 中創(chuàng)建的原始 TCP 套接字將與其他 TCP 套接字一起使用。

您在 C++ 代碼中創(chuàng)建的是一個 TCP 套接字,遺憾的是它與 socket.io 使用的內(nèi)容無關(guān)。Socket.io 支持使用 HTTP 流或 WebSocket(另一種協(xié)議)進行通信。

是一個似乎實現(xiàn)了 socket.io 協(xié)議的 C++ 庫示例。我自己從未使用過它,但這似乎是您正在尋找的東西。嘗試在 C++ 端使用它,或在 node.js 端實現(xiàn)原始 tcp 套接字。這個庫可能很適合。

我推薦本教程讓您開始了解直接使用 C++ 實現(xiàn)客戶端-服務(wù)器通信的基礎(chǔ)知識,然后您可以從那里開始了解如何在 nodejs 中創(chuàng)建客戶端。


查看完整回答
反對 回復(fù) 2022-12-22
  • 1 回答
  • 0 關(guān)注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號