try to fix bug
This commit is contained in:
		@@ -1,7 +1,29 @@
 | 
			
		||||
namespace server.test.UDPServer;
 | 
			
		||||
using System.Net;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using Xunit.Sdk;
 | 
			
		||||
 | 
			
		||||
public class UnitTest1
 | 
			
		||||
namespace server.test;
 | 
			
		||||
 | 
			
		||||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
 | 
			
		||||
public class UDPServerTest : BeforeAfterTestAttribute
 | 
			
		||||
{
 | 
			
		||||
    const string address = "127.0.0.1";
 | 
			
		||||
    const int port = 1234;
 | 
			
		||||
    private static readonly UDPServer udpServer = new UDPServer(port);
 | 
			
		||||
 | 
			
		||||
    public override void Before(MethodInfo methodUnderTest)
 | 
			
		||||
    {
 | 
			
		||||
        udpServer.Start();
 | 
			
		||||
        Console.WriteLine("Start UDP Server");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public override void After(MethodInfo methodUnderTest)
 | 
			
		||||
    {
 | 
			
		||||
        udpServer.Stop();
 | 
			
		||||
        Console.WriteLine("Stop UDP Server");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Fact]
 | 
			
		||||
    public void UDPDataDeepClone()
 | 
			
		||||
    {
 | 
			
		||||
@@ -33,4 +55,35 @@ public class UnitTest1
 | 
			
		||||
        Assert.NotEqual(udpData.Data, cloneUdpData.Data);
 | 
			
		||||
        Assert.NotEqual(udpData.HasRead, cloneUdpData.HasRead);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Theory]
 | 
			
		||||
    [InlineData("Hello World!")]
 | 
			
		||||
    [InlineData("Hello Server!")]
 | 
			
		||||
    public async Task UDPServerFind(string text)
 | 
			
		||||
    {
 | 
			
		||||
        var serverEP = new IPEndPoint(IPAddress.Parse(address), port);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        Assert.True(UDPClientPool.SendString(serverEP, [text]));
 | 
			
		||||
        {
 | 
			
		||||
            var ret = udpServer.FindData(address);
 | 
			
		||||
            Assert.True(ret.HasValue);
 | 
			
		||||
            var data = ret.Value;
 | 
			
		||||
            Assert.Equal(data.Address, address);
 | 
			
		||||
            Assert.Equal(data.Port, port);
 | 
			
		||||
            Assert.Equal(Encoding.ASCII.GetString(data.Data), text);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        Assert.True(await UDPClientPool.SendStringAsync(serverEP, [text]));
 | 
			
		||||
        {
 | 
			
		||||
            var ret = await udpServer.FindDataAsync(address);
 | 
			
		||||
            Assert.True(ret.HasValue);
 | 
			
		||||
            var data = ret.Value;
 | 
			
		||||
            Assert.Equal(data.Address, address);
 | 
			
		||||
            Assert.Equal(data.Port, port);
 | 
			
		||||
            Assert.Equal(Encoding.ASCII.GetString(data.Data), text);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ using System.Net;
 | 
			
		||||
using System.Net.Sockets;
 | 
			
		||||
using System.Text;
 | 
			
		||||
 | 
			
		||||
class UDPClientPool
 | 
			
		||||
public class UDPClientPool
 | 
			
		||||
{
 | 
			
		||||
    private static IPAddress localhost = IPAddress.Parse("127.0.0.1");
 | 
			
		||||
 | 
			
		||||
@@ -13,6 +13,8 @@ class UDPClientPool
 | 
			
		||||
        byte[] sendbuf = Encoding.ASCII.GetBytes(stringArray[0]);
 | 
			
		||||
 | 
			
		||||
        var sendLen = socket.SendTo(sendbuf, endPoint);
 | 
			
		||||
        socket.Close();
 | 
			
		||||
 | 
			
		||||
        if (sendLen == stringArray[0].Length) { return true; }
 | 
			
		||||
        else { return false; }
 | 
			
		||||
    }
 | 
			
		||||
@@ -26,6 +28,8 @@ class UDPClientPool
 | 
			
		||||
    {
 | 
			
		||||
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
 | 
			
		||||
        var sendLen = socket.SendTo(buf, endPoint);
 | 
			
		||||
        socket.Close();
 | 
			
		||||
 | 
			
		||||
        if (sendLen == buf.Length) { return true; }
 | 
			
		||||
        else { return false; }
 | 
			
		||||
    }
 | 
			
		||||
@@ -40,6 +44,8 @@ class UDPClientPool
 | 
			
		||||
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
 | 
			
		||||
        var sendBytes = pkg.ToBytes();
 | 
			
		||||
        var sendLen = socket.SendTo(sendBytes, endPoint);
 | 
			
		||||
        socket.Close();
 | 
			
		||||
 | 
			
		||||
        if (sendLen == sendBytes.Length) { return true; }
 | 
			
		||||
        else { return false; }
 | 
			
		||||
    }
 | 
			
		||||
@@ -54,6 +60,8 @@ class UDPClientPool
 | 
			
		||||
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
 | 
			
		||||
        var sendBytes = pkg.ToBytes();
 | 
			
		||||
        var sendLen = socket.SendTo(sendBytes, endPoint);
 | 
			
		||||
        socket.Close();
 | 
			
		||||
 | 
			
		||||
        if (sendLen == sendBytes.Length) { return true; }
 | 
			
		||||
        else { return false; }
 | 
			
		||||
    }
 | 
			
		||||
@@ -71,6 +79,8 @@ class UDPClientPool
 | 
			
		||||
        IPEndPoint ep = new IPEndPoint(localhost, port);
 | 
			
		||||
 | 
			
		||||
        var sendLen = socket.SendTo(sendBytes, ep);
 | 
			
		||||
        socket.Close();
 | 
			
		||||
 | 
			
		||||
        if (sendLen == sendBytes.Length) { return true; }
 | 
			
		||||
        else { return false; }
 | 
			
		||||
    }
 | 
			
		||||
@@ -87,5 +97,7 @@ class UDPClientPool
 | 
			
		||||
 | 
			
		||||
            Thread.Sleep(sleepMilliSeconds);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        socket.Close();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -92,7 +92,7 @@ public class UDPServer
 | 
			
		||||
        {
 | 
			
		||||
            Console.WriteLine(e.ToString());
 | 
			
		||||
            throw new ArgumentException(
 | 
			
		||||
                $"Not currect port num: {port}",
 | 
			
		||||
                $"Failed to set up server with this port: {port}",
 | 
			
		||||
                nameof(port)
 | 
			
		||||
                );
 | 
			
		||||
        }
 | 
			
		||||
@@ -143,7 +143,7 @@ public class UDPServer
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            return Optional.Some((UDPData)data);
 | 
			
		||||
            return Optional.Some((UDPData)data.DeepClone());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -196,7 +196,7 @@ public class UDPServer
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            return Optional.Some((UDPData)data);
 | 
			
		||||
            return Optional.Some((UDPData)data.DeepClone());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user