try to fix bug
This commit is contained in:
parent
e8ec4c2a86
commit
84699708d5
|
@ -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]
|
[Fact]
|
||||||
public void UDPDataDeepClone()
|
public void UDPDataDeepClone()
|
||||||
{
|
{
|
||||||
|
@ -33,4 +55,35 @@ public class UnitTest1
|
||||||
Assert.NotEqual(udpData.Data, cloneUdpData.Data);
|
Assert.NotEqual(udpData.Data, cloneUdpData.Data);
|
||||||
Assert.NotEqual(udpData.HasRead, cloneUdpData.HasRead);
|
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.Net.Sockets;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
class UDPClientPool
|
public class UDPClientPool
|
||||||
{
|
{
|
||||||
private static IPAddress localhost = IPAddress.Parse("127.0.0.1");
|
private static IPAddress localhost = IPAddress.Parse("127.0.0.1");
|
||||||
|
|
||||||
|
@ -13,6 +13,8 @@ class UDPClientPool
|
||||||
byte[] sendbuf = Encoding.ASCII.GetBytes(stringArray[0]);
|
byte[] sendbuf = Encoding.ASCII.GetBytes(stringArray[0]);
|
||||||
|
|
||||||
var sendLen = socket.SendTo(sendbuf, endPoint);
|
var sendLen = socket.SendTo(sendbuf, endPoint);
|
||||||
|
socket.Close();
|
||||||
|
|
||||||
if (sendLen == stringArray[0].Length) { return true; }
|
if (sendLen == stringArray[0].Length) { return true; }
|
||||||
else { return false; }
|
else { return false; }
|
||||||
}
|
}
|
||||||
|
@ -26,6 +28,8 @@ class UDPClientPool
|
||||||
{
|
{
|
||||||
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
||||||
var sendLen = socket.SendTo(buf, endPoint);
|
var sendLen = socket.SendTo(buf, endPoint);
|
||||||
|
socket.Close();
|
||||||
|
|
||||||
if (sendLen == buf.Length) { return true; }
|
if (sendLen == buf.Length) { return true; }
|
||||||
else { return false; }
|
else { return false; }
|
||||||
}
|
}
|
||||||
|
@ -40,6 +44,8 @@ class UDPClientPool
|
||||||
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
||||||
var sendBytes = pkg.ToBytes();
|
var sendBytes = pkg.ToBytes();
|
||||||
var sendLen = socket.SendTo(sendBytes, endPoint);
|
var sendLen = socket.SendTo(sendBytes, endPoint);
|
||||||
|
socket.Close();
|
||||||
|
|
||||||
if (sendLen == sendBytes.Length) { return true; }
|
if (sendLen == sendBytes.Length) { return true; }
|
||||||
else { return false; }
|
else { return false; }
|
||||||
}
|
}
|
||||||
|
@ -54,6 +60,8 @@ class UDPClientPool
|
||||||
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
||||||
var sendBytes = pkg.ToBytes();
|
var sendBytes = pkg.ToBytes();
|
||||||
var sendLen = socket.SendTo(sendBytes, endPoint);
|
var sendLen = socket.SendTo(sendBytes, endPoint);
|
||||||
|
socket.Close();
|
||||||
|
|
||||||
if (sendLen == sendBytes.Length) { return true; }
|
if (sendLen == sendBytes.Length) { return true; }
|
||||||
else { return false; }
|
else { return false; }
|
||||||
}
|
}
|
||||||
|
@ -71,6 +79,8 @@ class UDPClientPool
|
||||||
IPEndPoint ep = new IPEndPoint(localhost, port);
|
IPEndPoint ep = new IPEndPoint(localhost, port);
|
||||||
|
|
||||||
var sendLen = socket.SendTo(sendBytes, ep);
|
var sendLen = socket.SendTo(sendBytes, ep);
|
||||||
|
socket.Close();
|
||||||
|
|
||||||
if (sendLen == sendBytes.Length) { return true; }
|
if (sendLen == sendBytes.Length) { return true; }
|
||||||
else { return false; }
|
else { return false; }
|
||||||
}
|
}
|
||||||
|
@ -87,5 +97,7 @@ class UDPClientPool
|
||||||
|
|
||||||
Thread.Sleep(sleepMilliSeconds);
|
Thread.Sleep(sleepMilliSeconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
socket.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,7 @@ public class UDPServer
|
||||||
{
|
{
|
||||||
Console.WriteLine(e.ToString());
|
Console.WriteLine(e.ToString());
|
||||||
throw new ArgumentException(
|
throw new ArgumentException(
|
||||||
$"Not currect port num: {port}",
|
$"Failed to set up server with this port: {port}",
|
||||||
nameof(port)
|
nameof(port)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -143,7 +143,7 @@ public class UDPServer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return Optional.Some((UDPData)data);
|
return Optional.Some((UDPData)data.DeepClone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ public class UDPServer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return Optional.Some((UDPData)data);
|
return Optional.Some((UDPData)data.DeepClone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue