public void ImplicitCastTest1() { MutableIPEndPoint epToCast = new MutableIPEndPoint(IPAddress.Parse("127.0.0.1"), 1234); IPEndPointStruct casted1 = (IPEndPointStruct)epToCast; IPEndPoint casted2 = epToCast; Assert.AreEqual(new IPHolder(epToCast.Address), casted1.ip); Assert.AreEqual(epToCast.Address, casted2.Address); Assert.AreEqual(epToCast.Port, casted1.port); Assert.AreEqual(epToCast.Port, casted2.Port); }
public void Execute() { // Prepare Random r = new Random(0); byte[] toSend = new byte[128]; byte[] receive = new byte[128]; for (int i = 0; i < toSend.Length; i++) { toSend[i] = (byte)r.Next(); } // Senders Socket sender4 = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); Socket sender6 = new Socket(AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp); sender4.Bind(new IPEndPoint(IPAddress.Any, 0)); sender6.Bind(new IPEndPoint(IPAddress.IPv6Any, 0)); // Receivers Socket receiver4 = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); Socket receiver6 = new Socket(AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp); receiver4.Bind(new IPEndPoint(IPAddress.Any, 0)); receiver6.Bind(new IPEndPoint(IPAddress.IPv6Any, 0)); // Send IPEndPointStruct sendTarget4 = new IPEndPointStruct(new IPHolder(IPAddress.Loopback), (ushort)((IPEndPoint)receiver4.LocalEndPoint).Port); SocketHandler.SendTo(sender4, toSend, 0, toSend.Length, SocketFlags.None, ref sendTarget4); IPEndPointStruct sendTarget6 = new IPEndPointStruct(new IPHolder(IPAddress.IPv6Loopback), (ushort)((IPEndPoint)receiver6.LocalEndPoint).Port); SocketHandler.SendTo(sender6, toSend, 0, toSend.Length, SocketFlags.None, ref sendTarget6); // Receive IPEndPointStruct from4 = new IPEndPointStruct(new IPHolder(AddressFamily.InterNetwork), 0); int recv4 = SocketHandler.ReceiveFrom(receiver4, receive, 0, receive.Length, SocketFlags.None, ref from4); Assert.AreEqual(toSend.Length, recv4); CollectionAssert.AreEqual(toSend, receive); IPEndPointStruct from6 = new IPEndPointStruct(new IPHolder(AddressFamily.InterNetworkV6), 0); int recv6 = SocketHandler.ReceiveFrom(receiver6, receive, 0, receive.Length, SocketFlags.None, ref from6); Assert.AreEqual(toSend.Length, recv6); CollectionAssert.AreEqual(toSend, receive); }
public void ImplicitCastTest2() { EndPoint epToCast1 = new MutableIPEndPoint(IPAddress.Parse("127.0.0.1"), 1234); IPEndPointStruct casted1 = epToCast1; EndPoint epToCast2 = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234); IPEndPointStruct casted2 = epToCast2; Assert.AreEqual(casted1, casted2); Assert.AreEqual(casted1.ip, new IPHolder(((MutableIPEndPoint)epToCast1).Address)); Assert.AreEqual(casted2.ip, new IPHolder(((IPEndPoint)epToCast2).Address)); Assert.AreEqual(casted1.port, ((MutableIPEndPoint)epToCast1).Port); Assert.AreEqual(casted2.port, ((IPEndPoint)epToCast2).Port); }
public void PassHandle() { PosixResult result; // server socket var serverSocket = Socket.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp, blocking: true); var serverAddress = new IPEndPointStruct(IPAddress.Loopback, 0); serverSocket.Bind(serverAddress); serverAddress = serverSocket.GetLocalIPAddress(); serverSocket.Listen(10); // client connect var clientSocket = Socket.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp, blocking: true); clientSocket.TryConnect(serverAddress); // accept and pass socket SocketPair pair = Socket.CreatePair(AddressFamily.Unix, SocketType.Stream, ProtocolType.Unspecified, blocking: false); result = serverSocket.TryAcceptAndSendHandleTo(pair.Socket1); Assert.True(result.IsSuccess); // receive accept socket int acceptSocketFd; result = SocketInterop.ReceiveSocket(pair.Socket2, out acceptSocketFd, blocking: true); Socket acceptSocket = result.IsSuccess ? new Socket(acceptSocketFd) : null; Assert.True(result.IsSuccess); Assert.Equal(1, result.Value); // Send result = clientSocket.TrySend(s_data); // Receive byte[] receiveBuffer = new byte[10]; result = acceptSocket.TryReceive(new ArraySegment <byte>(receiveBuffer)); Assert.True(result.IsSuccess); Assert.Equal(s_data.Count, result.Value); // Close pair.Dispose(); serverSocket.Dispose(); clientSocket.Dispose(); acceptSocket.Dispose(); }
public void Tcp() { PosixResult result; // Create server socket var serverSocket = Socket.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp, blocking: true); // Bind var serverAddress = new IPEndPointStruct(IPAddress.Loopback, 0); result = serverSocket.TryBind(serverAddress); Assert.True(result.IsSuccess); result = serverSocket.TryGetLocalIPAddress(out serverAddress); Assert.True(result.IsSuccess); // Listen result = serverSocket.TryListen(10); Assert.True(result.IsSuccess); // Create client socket var clientSocket = Socket.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp, blocking: true); // Connect result = clientSocket.TryConnect(serverAddress); Assert.True(result.IsSuccess); // Accept client socket Socket acceptedSocket; result = serverSocket.TryAccept(out acceptedSocket, blocking: true); // Send result = acceptedSocket.TrySend(s_data); // Receive byte[] receiveBuffer = new byte[10]; result = clientSocket.TryReceive(new ArraySegment <byte>(receiveBuffer)); Assert.True(result.IsSuccess); Assert.Equal(s_data.Count, result.Value); // Close acceptedSocket.Dispose(); serverSocket.Dispose(); clientSocket.Dispose(); }
internal static void CreateConnectedSockets(out Socket socket1, out Socket socket2, bool blocking, bool ipv4 = true) { var serverSocket = Socket.Create(ipv4 ? AddressFamily.InterNetwork : AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp, blocking: true); var serverAddress = new IPEndPointStruct(ipv4 ? IPAddress.Loopback : IPAddress.IPv6Loopback, 0); serverSocket.Bind(serverAddress); serverAddress = serverSocket.GetLocalIPAddress(); serverSocket.Listen(10); var clientSocket = Socket.Create(ipv4 ? AddressFamily.InterNetwork : AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp, blocking); clientSocket.TryConnect(serverAddress); Socket acceptedSocket; acceptedSocket = serverSocket.Accept(blocking); serverSocket.Dispose(); socket1 = clientSocket; socket2 = acceptedSocket; }
public void ReuseLocalAddress() { PosixResult result; // Create server socket var serverSocket = Socket.Create(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp, blocking: true); // Bind var serverAddress = new IPEndPointStruct(IPAddress.Loopback, 0); result = serverSocket.TryBind(serverAddress); Assert.True(result.IsSuccess); // Get address result = serverSocket.TryGetLocalIPAddress(out serverAddress); Assert.True(result.IsSuccess); // Get address (no reuse) IPEndPointStruct serverAddress2; var reuseAddress = IPAddress.None; result = serverSocket.TryGetLocalIPAddress(out serverAddress2, reuseAddress); Assert.True(result.IsSuccess); Assert.Equal(serverAddress.Address, serverAddress2.Address); Assert.NotEqual(serverAddress.Address, reuseAddress); Assert.False(object.ReferenceEquals(serverAddress.Address, serverAddress2.Address)); // Get address (reuse) IPEndPointStruct serverAddress3; result = serverSocket.TryGetLocalIPAddress(out serverAddress3, reuseAddress: serverAddress2.Address); Assert.True(result.IsSuccess); Assert.True(object.ReferenceEquals(serverAddress2.Address, serverAddress3.Address)); // Close serverSocket.Dispose(); }
public STUNAttr_MappedAddress(IPEndPointStruct endPoint) { this = new STUNAttr_MappedAddress(endPoint.ip, endPoint.port); }