TcpClient 未通过 ajax 调用接收任何数据

TcpClient don't receive any data with ajax call

我正在努力找出为什么 TcpClient 在服务器端通过 ajax 调用时没有收到任何数据。

但是,如果我在我的服务器端代码中放置 断点,即使我用 ajax.

调用它,它也能正常工作

我还调查了我的 JavaScript 函数是否是异步的,但我的 JavaScript 函数似乎没问题。

JavaScript函数:

$('#btnGO').click(function () {

        var url = 'Home/Command';
        var data = { Location: $('#Location').val() };

        $.when($.getJSON(url, data)).then(function (result) {
            $('.Console').html(result);
        });

});

服务器端:

TcpClient tc = new TcpClient("Host Address", 23);
return Json(tc.Connected + " " + tc.Available, JsonRequestBehavior.AllowGet);

如果我在服务器端放置断点则输出:

true 22

如果我不在服务器端设置断点则输出:

true 0

我认为您希望调用 GetStream(),然后在 returned NetworkStream 上调用 Read()。 Read() 正在阻塞,并且不允许您的操作方法过早 return。现在,没有阻止调用来阻止您的操作方法立即 returning(比您的 tcp 客户端接收数据更快),这就是为什么当您放入断点时得到 22 - 它不会立即return。您的 UI 响应速度取决于有人通过套接字向您的 API 发送数据似乎很尴尬....

让我再强调一下:你在做什么真的很奇怪。您的 UI 将等待客户端通过套接字向您的 API 发送数据。话虽如此,请查看以下内容 link:https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.getstream(v=vs.110).aspx