[英]In centos7, tcpclient of net core 3 cannot send and receive data
代码在windows下运行良好,但是发布到CentOS时没有响应 7
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
var client = new TcpClient();
client.Connect("192.168.126.1", 6378);
var ns = client.GetStream();
Queue<byte[]> queue = new Queue<byte[]>();
Task.Run(() =>
{
var data = new Byte[10240];
while (client != null && client.Connected)
{
try
{
if (ns.DataAvailable)
{
var len = ns.Read(data, 0, data.Length);
if (len > 0)
{
queue.Enqueue(data.AsSpan().Slice(0, len).ToArray());
}
}
else
{
Thread.Sleep(1);
}
}
catch (Exception ex)
{
Console.WriteLine("接收数据发生异常:" + ex.Message);
}
}
});
Task.Run(() =>
{
List<byte> datas = new List<byte>();
while (client != null && client.Connected)
{
if (queue != null && queue.Count > 0)
{
if (queue.TryDequeue(out byte[] data))
{
datas.AddRange(data);
while (datas.Count > 2)
{
var dr = datas.AsReadOnly();
var index = dr.IndexOf(13);
if (index >= 0 && dr.IndexOf(10) == index + 1)
{
var len = index + 2;
Console.WriteLine(Encoding.UTF8.GetString(datas.Take(len).ToArray()));
datas.RemoveRange(0, len);
}
else
{
break;
}
}
}
}
else
{
Thread.Sleep(1);
}
}
});
var cmd = $"*2{Environment.NewLine}$4{Environment.NewLine}info{Environment.NewLine}$3{Environment.NewLine}all{Environment.NewLine}";
Console.WriteLine($"cmd:{cmd}");
var data = Encoding.UTF8.GetBytes(cmd);
ns.Write(data, 0, data.Length);
Console.WriteLine($"cmd:sended");
Console.ReadLine();
}
}
}
有谁知道发生了什么? 谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.