我很难找出TcpClient
如果通过ajax
来电话,那么$('#btnGO').click(function () {
var url = 'Home/Command';
var data = { Location: $('#Location').val() };
$.when($.getJSON(url, data)).then(function (result) {
$('.Console').html(result);
});
});
在服务器端没有收到任何数据的原因。
但是,如果我将断点放在我的服务器端代码中,即使我用ajax调用它也能正常工作。
我还调查了一下我的JavaScript函数是否异步,但似乎我的JavaScript函数很好。
JavaScript功能:
TcpClient tc = new TcpClient("Host Address", 23);
return Json(tc.Connected + " " + tc.Available, JsonRequestBehavior.AllowGet);
服务器端:
package data;
import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Delete;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.Query;
import android.arch.persistence.room.Update;
import java.util.List;
/**
* The {@link Dao} class to run CRUD operations on the database.
*/
@Dao
public interface GroceryItemDao {
@Query("SELECT * FROM GroceryItem")
List<GroceryItem> getAllGroceries();
@Query("SELECT * FROM groceryitem WHERE is_listed = 1")
List<GroceryItem> getAllListedGroceries();
@Update
void updateGrocery(GroceryItem groceryItem);
@Insert
void insertGroceryItem(GroceryItem groceryItem);
@Delete
void delete(GroceryItem groceryItem);
}
如果我在服务器端放置断点,则输出:
true 22
如果我不在服务器端放置断点,则输出:
true 0
答案 0 :(得分:0)
我认为你想要调用GetStream(),然后在返回的NetworkStream上调用Read()。 Read()是阻塞的,不允许你的action方法过早返回。现在,没有阻止调用来阻止你的动作方法立即返回(比你的tcp客户端接收数据更快),这就是为什么当你输入一个断点时你得到22 - 它不会立即返回。您的UI响应性依赖于某人通过套接字向您的API发送数据似乎很尴尬......
让我更多地强调一下:你正在做的事情真的很奇怪。您的UI将等待客户端通过套接字将数据发送到您的API。话虽如此,请查看以下链接:https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.getstream(v=vs.110).aspx