From a7cf4e8699a578b3ad827217242379f2e2a6f273 Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Tue, 21 Jun 2016 11:35:07 -0700 Subject: [PATCH] Outlined UDP support --- .../UserInterfaceState.xcuserstate | Bin 49840 -> 50374 bytes .../Assets/ZeroTierNetworkInterface.cs | 41 ++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate b/integrations/Apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate index b1e27ce96672c3c6a2c12bf882570811f7b33422..aa59c5b3bfda212409385419c37bbf804ff9446e 100644 GIT binary patch delta 16077 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 VhCZjUAV~c`w_N@I@b60b{{e0x&Vc{` diff --git a/integrations/Unity3D/Assets/ZeroTierNetworkInterface.cs b/integrations/Unity3D/Assets/ZeroTierNetworkInterface.cs index d56fe67..d07f83d 100755 --- a/integrations/Unity3D/Assets/ZeroTierNetworkInterface.cs +++ b/integrations/Unity3D/Assets/ZeroTierNetworkInterface.cs @@ -113,6 +113,11 @@ public class ZeroTierNetworkInterface { [DllImport (DLL_PATH)] unsafe protected static extern int zt_set_nonblock(int sockfd); + [DllImport (DLL_PATH)] + unsafe protected static extern int zt_sendto(int fd, IntPtr buf, int len, int flags, System.IntPtr addr, int addrlen); + [DllImport (DLL_PATH)] + unsafe protected static extern int zt_recvfrom(int fd, [In, Out] IntPtr buf, int len, int flags, System.IntPtr addr, int addrlen); + // ZT Thread controls [DllImport (DLL_PATH)] protected static extern bool zt_is_running(); @@ -307,6 +312,42 @@ public class ZeroTierNetworkInterface { return bytes_written; } + // Sends data to an address + public int SendTo(int fd, char[] buf, int len, int flags, string addr, int port) + { + GCHandle handle = GCHandle.Alloc(buf, GCHandleType.Pinned); + IntPtr ptr = handle.AddrOfPinnedObject(); + int bytes_written; + + // Form address structure + GCHandle sockaddr_ptr = ZeroTierUtils.Generate_unmananged_sockaddr(addr + ":" + port); + IntPtr pSockAddr = sockaddr_ptr.AddrOfPinnedObject (); + int addrlen = Marshal.SizeOf (pSockAddr); + + if((bytes_written = zt_sendto(fd, ptr, len*2, flags, pSockAddr, addrlen)) < 0) { + //error = (byte)bytes_written; + } + return bytes_written; + } + + // Receives data from an address + public int RecvFrom(int fd, ref char[] buf, int len, int flags, string addr, int port) + { + GCHandle handle = GCHandle.Alloc(buf, GCHandleType.Pinned); + IntPtr ptr = handle.AddrOfPinnedObject(); + + // Form address structure + GCHandle sockaddr_ptr = ZeroTierUtils.Generate_unmananged_sockaddr(addr + ":" + port); + IntPtr pSockAddr = sockaddr_ptr.AddrOfPinnedObject (); + int addrlen = Marshal.SizeOf (pSockAddr); + + int bytes_read = zt_recvfrom(fd, ptr, len*2, flags, pSockAddr, addrlen); + string str = Marshal.PtrToStringAuto(ptr); + //Marshal.Copy (ptr, buf, 0, bytes_read); + buf = Marshal.PtrToStringAnsi(ptr).ToCharArray(); + return bytes_read; + } + #region Service-Related calls // Returns whether the ZeroTier service is currently running public bool IsRunning()