[fix]修正UdpServer在接收广播时连续启动接收的错误,在StarAgent中,此时可能收到广播包,SocketFlags是Broadcast,需要清空,否则报错“参考的对象类型不支持尝试的操作”; 无需设置SocketOptionName.PacketInformation,在ReceiveMessageFromAsync时会自动设置,并且支持ipv6;
石头 编写于 2024-10-10 00:36:00 石头 提交于 2024-10-10 00:45:43
X
using System;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using NewLife;
using NewLife.Log;
using NewLife.Net;
using Xunit;

namespace XUnitTest.Net
{
    public class NetSeverTests
    {
        [Fact]
        public void TcpEmptyData()
        {
            var server = new NetServer
            {
                Port = 7777,

                Log = XTrace.Log,
                SessionLog = XTrace.Log,
                SocketLog = XTrace.Log,
                LogSend = true,
                LogReceive = true,
            };

            server.Received += (s, e) =>
            {
                var ss = s as INetSession;
                ss.Send(e.Packet);
            };

            server.Start();

            {
                var uri = new NetUri($"tcp://127.0.0.1:{server.Port}");
                var client = new TcpClient();
                client.Connect(uri.EndPoint);

                var ns = client.GetStream();
                ns.Write("Stone@NewLife.com".GetBytes());

                var buf = new Byte[1024];
                var rs = ns.Read(buf, 0, buf.Length);
            }

            Thread.Sleep(3_000);
        }
    }
}