【问题标题】:Wait for specific packet after connection establishment in local socket在本地套接字建立连接后等待特定的数据包
【发布时间】:2014-05-27 08:41:38
【问题描述】:

我目前正在开发一个使用 WebSockets 与我的浏览器通信的 C++ 应用程序。连接只是本地的,永远不会有任何非本地套接字。

目前我的 C++ 代码如下所示(仅作为示例):

while (true) {
    WebSocket *socket = server->accept () ;
    socket->read (buffer, 256) ;
}

还有我的 javascript 代码:

var socket = new WebSocket ("ws://localhost:4564") ;
socket.onopen = function () {
    socket.send("Hello my name is Holt!");
} ;

如您所见,我正在等待一个数据包,该数据包应在连接打开后立即发送。所以我有两个问题:

  • 首先,有没有办法直接在连接内部发送这些信息? (我认为不是,所以这就是为什么我的第二个问题是……)?
  • 其次,知道连接是本地的,是不是服务器接受了socket,之后却无法取回数据包?

补充一点信息,当前的 C++ 应用程序基于带有 QtWebSockets 模块的 Qt 5.3,而 javascript 代码是 Google Chrome 扩展程序,可以在特定网站上运行脚本。

感谢您的帮助!

【问题讨论】:

    标签: c++ sockets websocket localhost


    【解决方案1】:
    1. 在客户端和服务器之间建立websocket连接后,在客户端,当连接处于活动状态时,你可以调用socket.send()向服务器发送数据。

    2. 即使本地连接,服务器仍然需要等待和接收数据,这是一个完整的 TCP/IP 数据传输过程。

    【讨论】:

    • 对于 2.,我知道 WebSockets 是如何工作的,我的问题是“在连接和第一次‘发送’之间可能会出现任何问题,这会导致我的 C++ 应用程序永远阻塞吗?”
    • 我认为没问题,在服务器 accept 之后。可以read客户端发送数据。
    猜你喜欢
    • 2019-09-20
    • 2021-05-23
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2017-01-17
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多