Javascript TcpClient don';使用ajax调用无法接收任何数据
我正在努力找出如果服务器端通过Javascript TcpClient don';使用ajax调用无法接收任何数据,javascript,c#,ajax,tcpclient,Javascript,C#,Ajax,Tcpclient,我正在努力找出如果服务器端通过ajax调用,为什么TcpClient不接收任何数据 然而,如果我在服务器端代码中设置断点,即使我使用ajax调用它,它也可以正常工作 我还调查了我的JavaScript函数是否是异步的,但我的JavaScript函数似乎还可以 JavaScript函数: $('#btnGO').click(function () { var url = 'Home/Command'; var data = { Location: $('#Loca
ajax
调用,为什么TcpClient
不接收任何数据
然而,如果我在服务器端代码中设置断点,即使我使用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);
如果我在服务器端设置断点,则输出:
真的22
如果我没有在服务器端设置断点,则输出:
真0
我想您应该调用GetStream(),然后对返回的NetworkStream调用Read()。Read()正在阻塞,不允许您的操作方法过早返回。现在,没有阻止调用来阻止您的操作方法立即返回(比您的tcp客户端接收数据的速度更快),这就是为什么当您输入断点时,会得到22个值——它不会立即返回。看起来很尴尬,您的UI响应依赖于某人通过套接字向您的API发送数据
让我再强调一点:你所做的真的很奇怪。您的UI将等待客户端通过套接字向API发送数据。话虽如此,请查看以下链接:我想您应该调用
GetStream()
,然后在返回的NetworkStream上调用Read()
Read()
正在阻塞,不允许您的操作方法过早返回。现在,没有阻止调用来阻止您的操作方法立即返回(比您的tcp客户端接收数据的速度更快),这就是为什么当您输入断点时,会得到22个值——它不会立即返回。你的UI响应性依赖于某人通过套接字向你的API发送数据,这似乎很尴尬……好吧,让我进一步强调一下:你所做的真的很奇怪。您的UI将等待客户端通过套接字向API发送数据。说到这里,请查看以下链接:@Steve'saD谢谢你。请写下你的评论作为答案,这样我就可以选择了。如果你告诉我你实际上想做什么,即你想做什么样的应用程序,我也许能给你指出正确的方向。你的第一句话让我觉得你只是想把数据从javascript发送到你的api/端点。您不需要套接字,只需在签名中添加一个模型,然后让mvc/WebAPI进行模型绑定。。。。