diff --git a/server/server.csproj b/server/server.csproj index a0b561d..af9d95c 100644 --- a/server/server.csproj +++ b/server/server.csproj @@ -8,6 +8,7 @@ + diff --git a/server/src/LabProtocol.cs b/server/src/LabProtocol.cs deleted file mode 100644 index e69de29..0000000 diff --git a/server/src/UdpClientPool.cs b/server/src/UdpClientPool.cs index bd991d3..1557af1 100644 --- a/server/src/UdpClientPool.cs +++ b/server/src/UdpClientPool.cs @@ -6,9 +6,29 @@ class UDPClientPool { private static IPAddress localhost = IPAddress.Parse("127.0.0.1"); - public UDPClientPool() + public static void SendString(IPEndPoint endPoint, string[] stringArray) { + Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); + byte[] sendbuf = Encoding.ASCII.GetBytes(stringArray[0]); + + socket.SendTo(sendbuf, endPoint); + } + + public async static void AsyncSendString(IPEndPoint endPoint, string[] stringArray) + { + await Task.Run(() => { SendString(endPoint, stringArray); }); + } + + public static void SendBytes(IPEndPoint endPoint, byte[] buf) + { + Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); + socket.SendTo(buf, endPoint); + } + + public async static void AsyncSendBytes(IPEndPoint endPoint, byte[] buf) + { + await Task.Run(() => { SendBytes(endPoint, buf); }); } public static void SendLocalHost(int port, string[] stringArray) @@ -34,8 +54,4 @@ class UDPClientPool Thread.Sleep(sleepMilliSeconds); } } - - public void Start() - { - } } diff --git a/server/src/WebProtocol.cs b/server/src/WebProtocol.cs new file mode 100644 index 0000000..1573d06 --- /dev/null +++ b/server/src/WebProtocol.cs @@ -0,0 +1,50 @@ +namespace WebProtocol +{ + + public enum PackSign + { + SendAddr = 0x00, + SendData = 0xFF, + RecvData = 0x0F, + RecvResp = 0xF0, + } + + public enum BurstType + { + ExtendBurst = 0b00, + FixedBurst = 0b01, + } + + public struct SendAddrPackage + { + readonly byte Sign = (byte)PackSign.SendAddr; + readonly byte commandType; + readonly byte burstLength; + readonly byte _reserved; + readonly UInt32 address; + + + public SendAddrPackage(BurstType burstType, byte commandID, bool isWrite) + { + commandType = ( + ((byte)burstType << 5) | + ((commandID & (byte)0x03) << 3) | + (isWrite ? (byte)0x01 : (byte)0x00) + ); + } + + public void toBytes() + { + + } + } + + public struct RecvRackage + { + + public void toBytes() + { + + } + } +}