繁体   English   中英

centos7中net core 3的tcpclient无法收发数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM