c# - 节点客户端和 C# 服务器之间的通信
问题描述
我目前正在开发一个与 ac# 服务器通信的 NodeJS 应用程序。NodeJS Web 应用接收请求并执行 Get:
app.get('/api/retrieve', (req, res) => {
let client = new net.Socket();
client.connect(port, host, function() {
console.log("connected");
});
client.on('data', function(data){
console.log(data);
});
client.on('close', function(){
console.log("closed");
});
});
这成功连接到我的 c# 服务器:
public void StartListening()
{
TcpListener server = new TcpListener(IPAddress.Any, 5000);
server.Start();
while (true)
{
TcpClient client = server.AcceptTcpClient();
NetworkStream networkStream = client.GetStream();
while (client.Connected)
{
try
{
byte[] message = new byte[1024];
networkStream.Read(message, 0, message.Length);
var json = Encoding.Default.GetString(message);
if (json.Contains("GET /api/retrieve"))
{
string jsonData = JsonConvert.SerializeObject(_dal.Retrieve());
byte[] dataBytes = System.Text.Encoding.Unicode.GetBytes(jsonData);
client.GetStream().Write(dataBytes, 0, dataBytes.Length);
}
}
catch (Exception ex)
{
throw ex;
}
}
}
}
在浏览器中调试时,我收到以下错误:
代理错误:无法将请求 /api/retrieve 从 localhost:3000 代理到 localhost:5000 (HPE_INVALID_CONSTANT)。
在 Visual Studio 中,捕获到以下异常:
无法从传输连接读取数据:现有连接被远程主机强行关闭
此外,Visual Studio 仅在networkStream.Read(message, 0, message.Length);行之后捕获上述异常。在第二次迭代中。
总而言之,.Net 应用程序应该将 JSON 字符串发送回客户端 NodeJS。
解决方案
推荐阅读
- codenameone - Codenameone - 当光标聚焦在键盘打开的文本字段上时,会扭曲屏幕
- angular - 将日期数组分配给 ngx-mydatepicker disableDates
- statistics - 排名数据的统计显着性检验
- c# - 在具有不同测试 IP 的多个位置工作
- python - 为什么 Monty Hall 的这种实现给出的概率是 50%?
- python - 删除字符串的多余部分
- holoviews - Geoviews 地图 WMTS 开始“框”
- grails - 从 Grails 2 升级到 Grails 3 后,我无法再访问 Grails 控制台
- typescript - 条件类型中的 TypeScript 类型推断
- c# - 错误参数 1:无法从 int[*,*] 转换为 'int'