gpt4 book ai didi

c# - WebSocketSharp 尝试打开套接字并读取传入数据

转载 作者:行者123 更新时间:2023-12-03 12:08:55 24 4
gpt4 key购买 nike

我正在用 C# 开发一个小项目,我需要在其中创建套接字客户端并观察套接字中的 json 文件。

我尝试了一些方法,但每次运行该项目时都会出现错误:

PM|Fatal|StackBuilderSink._PrivateProcessMessage|WebSocketSharp.WebSocketExceptio n: An exception has occurred while reading an HTTP request/response. ---> System.IO.EndOfStreamException: The header cannot be read from the data source.

一些背景。为了进行测试,我将 node.js 与 socket.io 一起使用来读取 Json 文件并 io.emit 数据。我知道数据格式正确我有一个 HTML/java 脚本页面可以查看数据并使用它执行操作。

public MainWindow()
{
InitializeComponent();

using (var ws = new WebSocket("ws://127.0.0.1:8889"))
{
ws.OnMessage += (sender, e) =>
json_output.Text = (e.Data);

ws.ConnectAsync();
}
}

最佳答案

根据您的描述,我假设您通过 io.emit 发送了纯 json 文件。

超文本传输​​协议(protocol) (HTTP) 期望按照维基百科 (HTTP response) 中的描述构建响应:

The response message consists of the following:

  • A status line which includes the status code and reason message (e.g., HTTP/1.1 200 OK, which indicates that the client's request
    succeeded).
  • Response header fields (e.g., Content-Type: text/html).
  • An empty line.
  • An optional message body.

因此你必须先发送状态行和响应头信息,然后是一个空行。在此之后,您可以将 json 文件的内容作为消息正文发送。

我假设还有一个用于 node.js 的库,它将用作 Web 服务器并处理 HTTP 内容。


如果你想在没有协议(protocol)的情况下处理纯数据流,你不应该使用像 WebSocket 这样的特定协议(protocol)套接字,而应该使用像 TcpListener 这样的通用套接字。

当然你必须解决应该由协议(protocol)解决的问题,比如消息/文件何时结束......

有关如何使用 TcpListener 和避免坑洞的示例应在此处的 stackoverflow 上或通过 Dr. Google 提供。

关于c# - WebSocketSharp 尝试打开套接字并读取传入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46816180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com