1 // System.Net.Sockets.SocketTest.cs
4 // Brad Fitzpatrick (brad@danga.com)
5 // Gonzalo Paniagua Javier (gonzalo@novell.com)
7 // (C) Copyright 2003 Brad Fitzpatrick
8 // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
12 using System.Collections;
13 using System.Threading;
15 using System.Net.Sockets;
16 using NUnit.Framework;
18 namespace MonoTests.System.Net.Sockets
21 public class SocketTest
23 // note: also used in SocketCas tests
24 public const string BogusAddress = "192.168.244.244";
25 public const int BogusPort = 23483;
28 public void ConnectIPAddressAny ()
30 IPEndPoint ep = new IPEndPoint (IPAddress.Any, 0);
32 //udp sockets are not supported
34 using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) {
39 } catch (SocketException ex) {
40 Assert.AreEqual (10049, ex.ErrorCode, "#2");
45 using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) {
50 } catch (SocketException ex) {
51 Assert.AreEqual (10049, ex.ErrorCode, "#4");
56 [Ignore ("Bug #75158")]
57 public void IncompatibleAddress ()
59 IPEndPoint epIPv6 = new IPEndPoint (IPAddress.IPv6Any,
63 using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP)) {
68 } catch (SocketException ex) {
71 int expectedError = 10022;
73 // address incompatible with protocol
74 int expectedError = 10047;
76 Assert.AreEqual (expectedError, ex.ErrorCode,
82 [Category ("InetAccess")]
83 public void EndConnect ()
85 IPAddress ipOne = IPAddress.Parse (BogusAddress);
86 IPEndPoint ipEP = new IPEndPoint (ipOne, BogusPort);
87 Socket sock = new Socket (ipEP.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
88 IAsyncResult ar = sock.BeginConnect (ipEP, null, null);
89 bool gotException = false;
92 sock.EndConnect (ar); // should raise an exception because connect was bogus
97 Assertion.AssertEquals ("A01", gotException, true);
101 [ExpectedException (typeof (ArgumentNullException))]
102 public void SelectEmpty ()
104 ArrayList list = new ArrayList ();
105 Socket.Select (list, list, list, 1000);
108 private bool BlockingConnect (bool block)
110 IPEndPoint ep = new IPEndPoint(IPAddress.Loopback, 1234);
111 Socket server = new Socket(AddressFamily.InterNetwork,
115 server.Blocking=block;
119 Socket conn = new Socket (AddressFamily.InterNetwork,
124 Socket client = server.Accept();
125 bool client_block = client.Blocking;
131 return(client_block);
135 public void AcceptBlockingStatus()
139 block = BlockingConnect(true);
140 Assertion.AssertEquals ("BlockingStatus01",
143 block = BlockingConnect(false);
144 Assertion.AssertEquals ("BlockingStatus02",
148 static bool CFAConnected = false;
149 static ManualResetEvent CFACalledBack;
151 private static void CFACallback (IAsyncResult asyncResult)
153 Socket sock = (Socket)asyncResult.AsyncState;
154 CFAConnected = sock.Connected;
156 if (sock.Connected) {
157 sock.EndConnect (asyncResult);
160 CFACalledBack.Set ();
164 public void ConnectFailAsync ()
166 Socket sock = new Socket (AddressFamily.InterNetwork,
169 sock.Blocking = false;
170 CFACalledBack = new ManualResetEvent (false);
171 CFACalledBack.Reset ();
173 /* Need a port that is not being used for
176 sock.BeginConnect (new IPEndPoint (IPAddress.Loopback,
178 new AsyncCallback (CFACallback),
180 CFACalledBack.WaitOne ();
182 Assertion.AssertEquals ("ConnectFail", CFAConnected,
189 [ExpectedException (typeof (ArgumentException))]
191 public void SetSocketOptionBoolean ()
193 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 1);
194 Socket sock = new Socket (ep.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
196 sock.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
206 public void TestSelect1 ()
208 Socket srv = CreateServer ();
209 ClientSocket clnt = new ClientSocket (srv.LocalEndPoint);
210 Thread th = new Thread (new ThreadStart (clnt.ConnectSleepClose));
216 ArrayList list = new ArrayList ();
217 ArrayList empty = new ArrayList ();
219 Socket.Select (list, empty, empty, 100);
220 Assertion.AssertEquals ("#01", 0, empty.Count);
221 Assertion.AssertEquals ("#02", 1, list.Count);
222 Socket.Select (empty, list, empty, 100);
223 Assertion.AssertEquals ("#03", 0, empty.Count);
224 Assertion.AssertEquals ("#04", 1, list.Count);
225 Socket.Select (list, empty, empty, -1);
226 Assertion.AssertEquals ("#05", 0, empty.Count);
227 Assertion.AssertEquals ("#06", 1, list.Count);
235 static Socket CreateServer ()
237 Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
238 sock.Bind (new IPEndPoint (IPAddress.Loopback, 0));
247 public ClientSocket (EndPoint ep)
250 sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
253 public void ConnectSleepClose ()
262 byte [] b = new byte [10];
267 byte[] buf = new byte[100];
270 [ExpectedException (typeof (ObjectDisposedException))]
271 public void Disposed1 ()
274 //UDP sockets are not supported in GH
275 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
277 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
279 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
282 s.ReceiveFrom (buf, ref ep);
286 [ExpectedException (typeof (ObjectDisposedException))]
287 public void Disposed2 ()
290 //UDP sockets are not supported in GH
291 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
293 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
301 [ExpectedException (typeof (ObjectDisposedException))]
302 public void Disposed3 ()
305 //UDP sockets are not supported in GH
306 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
308 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
312 s.GetSocketOption (0, 0);
316 [ExpectedException (typeof (ObjectDisposedException))]
317 public void Disposed4 ()
320 //UDP sockets are not supported in GH
321 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
323 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
327 s.GetSocketOption (0, 0, null);
331 [ExpectedException (typeof (ObjectDisposedException))]
332 public void Disposed5 ()
335 //UDP sockets are not supported in GH
336 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
338 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
342 s.GetSocketOption (0, 0, 0);
346 [ExpectedException (typeof (ObjectDisposedException))]
347 public void Disposed6 ()
350 //UDP sockets are not supported in GH
351 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
353 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
361 [ExpectedException (typeof (ObjectDisposedException))]
362 public void Disposed7 ()
365 //UDP sockets are not supported in GH
366 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
368 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
376 [ExpectedException (typeof (ObjectDisposedException))]
377 public void Disposed8 ()
380 //UDP sockets are not supported in GH
381 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
383 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
391 [ExpectedException (typeof (ObjectDisposedException))]
392 public void Disposed9 ()
395 //UDP sockets are not supported in GH
396 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
398 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
406 [ExpectedException (typeof (ObjectDisposedException))]
407 public void Disposed10 ()
410 //UDP sockets are not supported in GH
411 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
413 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
417 s.Receive (buf, 10, 0);
421 [ExpectedException (typeof (ObjectDisposedException))]
422 public void Disposed11 ()
425 //UDP sockets are not supported in GH
426 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
428 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
430 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
433 s.Receive (buf, 0, 10, 0);
437 [ExpectedException (typeof (ObjectDisposedException))]
438 public void Disposed12 ()
441 //UDP sockets are not supported in GH
442 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
444 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
446 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
449 s.ReceiveFrom (buf, 0, ref ep);
453 [ExpectedException (typeof (ObjectDisposedException))]
454 public void Disposed13 ()
457 //UDP sockets are not supported in GH
458 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
460 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
462 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
465 s.ReceiveFrom (buf, 10, 0, ref ep);
469 [ExpectedException (typeof (ObjectDisposedException))]
470 public void Disposed14 ()
473 //UDP sockets are not supported in GH
474 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
476 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
478 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
481 s.ReceiveFrom (buf, 0, 10, 0, ref ep);
485 [ExpectedException (typeof (ObjectDisposedException))]
486 public void Disposed15 ()
489 //UDP sockets are not supported in GH
490 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
492 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
500 [ExpectedException (typeof (ObjectDisposedException))]
501 public void Disposed16 ()
504 //UDP sockets are not supported in GH
505 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
507 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
515 [ExpectedException (typeof (ObjectDisposedException))]
516 public void Disposed17 ()
519 //UDP sockets are not supported in GH
520 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
522 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
530 [ExpectedException (typeof (ObjectDisposedException))]
531 public void Disposed18 ()
534 //UDP sockets are not supported in GH
535 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
537 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
539 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
542 s.Send (buf, 0, 10, 0);
546 [ExpectedException (typeof (ObjectDisposedException))]
547 public void Disposed19 ()
550 //UDP sockets are not supported in GH
551 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
553 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
555 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
558 s.SendTo (buf, 0, ep);
562 [ExpectedException (typeof (ObjectDisposedException))]
563 public void Disposed20 ()
566 //UDP sockets are not supported in GH
567 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
569 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
571 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
574 s.SendTo (buf, 10, 0, ep);
578 [ExpectedException (typeof (ObjectDisposedException))]
579 public void Disposed21 ()
582 //UDP sockets are not supported in GH
583 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
585 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
587 EndPoint ep = new IPEndPoint(IPAddress.Any, 31337);
590 s.SendTo(buf, 0, 10, 0, ep);
595 [ExpectedException (typeof (ObjectDisposedException))]
596 public void Disposed22 ()
599 //UDP sockets are not supported in GH
600 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
602 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
604 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
611 [ExpectedException (typeof (ObjectDisposedException))]
612 public void Disposed23 ()
615 //UDP sockets are not supported in GH
616 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
618 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
620 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
626 static ManualResetEvent SocketError_event = new ManualResetEvent (false);
628 private static void SocketError_callback (IAsyncResult ar)
630 Socket sock = (Socket)ar.AsyncState;
633 sock.EndConnect (ar);
636 SocketError_event.Set ();
643 public void SocketError ()
645 Socket sock = new Socket (AddressFamily.InterNetwork,
648 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
651 SocketError_event.Reset ();
653 sock.Blocking = false;
654 sock.BeginConnect (ep, SocketError_callback,
657 if (SocketError_event.WaitOne (2000, false) == false) {
658 Assert.Fail ("SocketError wait timed out");
661 Assertion.AssertEquals ("SocketError #1", false,
666 error = (int)sock.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Error);
667 Assertion.AssertEquals ("SocketError #2", 10061,
670 error = (int)sock.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Error);
671 Assertion.AssertEquals ("SocketError #3", 10061,
680 public void SocketInformationCtor ()
686 [Ignore ("Socket.DontFragment property is not supported")]
688 public void DontFragmentDefaultTcp ()
690 Socket sock = new Socket (AddressFamily.InterNetwork,
694 Assertion.AssertEquals ("DontFragmentDefaultTcp",
695 false, sock.DontFragment);
702 [Ignore("Socket.DontFragment property is not supported")]
704 public void DontFragmentChangeTcp ()
706 Socket sock = new Socket (AddressFamily.InterNetwork,
710 sock.DontFragment = true;
712 Assertion.AssertEquals ("DontFragmentChangeTcp",
713 true, sock.DontFragment);
720 [Ignore("Socket.DontFragment property is not supported")]
722 public void DontFragmentDefaultUdp ()
724 Socket sock = new Socket (AddressFamily.InterNetwork,
728 Assertion.AssertEquals ("DontFragmentDefaultUdp",
729 false, sock.DontFragment);
736 [Ignore("Socket.DontFragment property is not supported")]
738 public void DontFragmentChangeUdp ()
740 Socket sock = new Socket (AddressFamily.InterNetwork,
744 sock.DontFragment = true;
746 Assertion.AssertEquals ("DontFragmentChangeUdp",
747 true, sock.DontFragment);
753 [ExpectedException (typeof(ObjectDisposedException))]
755 [Ignore("Socket.DontFragment property is not supported")]
757 public void DontFragmentClosed ()
759 Socket sock = new Socket (AddressFamily.InterNetwork,
765 bool val = sock.DontFragment;
769 [Category ("NotWorking")] // Need to pick a non-IP AddressFamily that "works" on both mono and ms, this one only works on ms
770 public void DontFragment ()
772 Socket sock = new Socket (AddressFamily.NetBios,
773 SocketType.Seqpacket,
774 ProtocolType.Unspecified);
777 sock.DontFragment = true;
778 Assert.Fail ("DontFragment #1");
779 } catch (NotSupportedException) {
781 Assert.Fail ("DontFragment #2");
789 [Ignore("System.Net.Sockets.Socket.EnableBroadcast property is not supported")]
791 public void EnableBroadcastDefaultTcp ()
793 Socket sock = new Socket (AddressFamily.InterNetwork,
798 bool value = sock.EnableBroadcast;
799 Assert.Fail ("EnableBroadcastDefaultTcp #1");
800 } catch (SocketException ex) {
801 Assert.AreEqual (10042, ex.ErrorCode, "EnableBroadcastDefaultTcp #2");
803 Assert.Fail ("EnableBroadcastDefaultTcp #2");
811 [Ignore("System.Net.Sockets.Socket.EnableBroadcast property is not supported")]
813 public void EnableBroadcastDefaultUdp ()
815 Socket sock = new Socket (AddressFamily.InterNetwork,
819 Assertion.AssertEquals ("EnableBroadcastDefaultUdp",
820 false, sock.EnableBroadcast);
827 [Ignore ("System.Net.Sockets.Socket.EnableBroadcast property is not supported")]
829 public void EnableBroadcastChangeTcp ()
831 Socket sock = new Socket (AddressFamily.InterNetwork,
836 sock.EnableBroadcast = true;
837 Assert.Fail ("EnableBroadcastChangeTcp #1");
838 } catch (SocketException ex) {
839 Assert.AreEqual (10042, ex.ErrorCode, "EnableBroadcastChangeTcp #2");
841 Assert.Fail ("EnableBroadcastChangeTcp #2");
849 [Ignore("System.Net.Sockets.Socket.EnableBroadcast property is not supported")]
851 public void EnableBroadcastChangeUdp ()
853 Socket sock = new Socket (AddressFamily.InterNetwork,
857 sock.EnableBroadcast = true;
859 Assertion.AssertEquals ("EnableBroadcastChangeUdp",
860 true, sock.EnableBroadcast);
866 [ExpectedException (typeof(ObjectDisposedException))]
868 [Ignore("System.Net.Sockets.Socket.EnableBroadcast property is not supported")]
870 public void EnableBroadcastClosed ()
872 Socket sock = new Socket (AddressFamily.InterNetwork,
878 bool val = sock.EnableBroadcast;
881 /* Can't test the default for ExclusiveAddressUse as
882 * it's different on different versions and service
886 [Category ("NotWorking")] // Not supported on Linux
887 public void ExclusiveAddressUseUnbound ()
889 Socket sock = new Socket (AddressFamily.InterNetwork,
893 sock.ExclusiveAddressUse = true;
895 Assertion.AssertEquals ("ExclusiveAddressUseUnbound",
897 sock.ExclusiveAddressUse);
903 [ExpectedException (typeof(InvalidOperationException))]
904 [Category ("NotWorking")] // Not supported on Linux
905 public void ExclusiveAddressUseBound ()
907 Socket sock = new Socket (AddressFamily.InterNetwork,
911 sock.Bind (new IPEndPoint (IPAddress.Any, 1235));
912 sock.ExclusiveAddressUse = true;
917 [ExpectedException (typeof(ObjectDisposedException))]
919 [Ignore ("System.Net.Sockets.Socket.ExclusiveAddressUse is not supported")]
921 public void ExclusiveAddressUseClosed ()
923 Socket sock = new Socket (AddressFamily.InterNetwork,
929 bool val = sock.ExclusiveAddressUse;
934 [Ignore ("System.Net.Sockets.Socket.IsBound property isn't supported")]
936 public void IsBoundTcp ()
938 Socket sock = new Socket (AddressFamily.InterNetwork,
941 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
944 Assertion.AssertEquals ("IsBoundTcp #1", false,
948 Assertion.AssertEquals ("IsBoundTcp #2", true,
953 Socket sock2 = new Socket (AddressFamily.InterNetwork,
957 Assertion.AssertEquals ("IsBoundTcp #3", false,
961 Assertion.AssertEquals ("IsBoundTcp #4", true,
965 Assertion.AssertEquals ("IsBoundTcp #5", true,
969 Assertion.AssertEquals ("IsBoundTcp #6", true,
975 [Ignore("System.Net.Sockets.Socket.IsBound property isn't supported")]
977 public void IsBoundUdp ()
979 Socket sock = new Socket (AddressFamily.InterNetwork,
982 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
985 Assertion.AssertEquals ("IsBoundUdp #1", false,
989 Assertion.AssertEquals ("IsBoundUdp #2", true,
993 Assertion.AssertEquals ("IsBoundUdp #3", true,
997 sock = new Socket (AddressFamily.InterNetwork,
1001 Assertion.AssertEquals ("IsBoundUdp #4", false,
1005 Assertion.AssertEquals ("IsBoundUdp #5", true,
1009 Assertion.AssertEquals ("IsBoundUdp #6", true,
1015 [Ignore ("System.Net.Sockets.Socket.IsBound property is not supported")]
1017 /* Should not throw an exception */
1018 public void IsBoundClosed ()
1020 Socket sock = new Socket (AddressFamily.InterNetwork,
1026 bool val = sock.IsBound;
1029 /* Nothing much to test for LingerState */
1033 [Ignore("System.Net.Sockets.Socket.MulticastLoopback property is not supported")]
1035 public void MulticastLoopbackDefaultTcp ()
1037 Socket sock = new Socket (AddressFamily.InterNetwork,
1042 bool value = sock.MulticastLoopback;
1043 Assert.Fail ("MulticastLoopbackDefaultTcp #1");
1044 } catch (SocketException ex) {
1045 Assert.AreEqual (10042, ex.ErrorCode, "MulticastLoopbackDefaultTcp #2");
1047 Assert.Fail ("MulticastLoopbackDefaultTcp #2");
1055 [Ignore ("System.Net.Sockets.Socket.MulticastLoopback property is not supported")]
1057 public void MulticastLoopbackChangeTcp ()
1059 Socket sock = new Socket (AddressFamily.InterNetwork,
1064 sock.MulticastLoopback = false;
1065 Assert.Fail ("MulticastLoopbackChangeTcp #1");
1066 } catch (SocketException ex) {
1067 Assert.AreEqual (10042, ex.ErrorCode, "MulticastLoopbackChangeTcp #2");
1069 Assert.Fail ("MulticastLoopbackChangeTcp #2");
1077 [Ignore ("Udp sockets are not supported")]
1079 public void MulticastLoopbackDefaultUdp ()
1081 Socket sock = new Socket (AddressFamily.InterNetwork,
1085 Assertion.AssertEquals ("MulticastLoopbackDefaultUdp",
1086 true, sock.MulticastLoopback);
1093 [Ignore ("Udp sockets are not supported")]
1095 public void MulticastLoopbackChangeUdp ()
1097 Socket sock = new Socket (AddressFamily.InterNetwork,
1101 sock.MulticastLoopback = false;
1103 Assertion.AssertEquals ("MulticastLoopbackChangeUdp",
1104 false, sock.MulticastLoopback);
1110 [ExpectedException (typeof(ObjectDisposedException))]
1112 [Ignore("System.Net.Sockets.Socket.MulticastLoopback property is not supported")]
1114 public void MulticastLoopbackClosed ()
1116 Socket sock = new Socket (AddressFamily.InterNetwork,
1122 bool val = sock.MulticastLoopback;
1125 /* OSSupportsIPv6 depends on the environment */
1129 [Ignore("System.Net.Sockets.Socket.ReseiveBufferSize property is not supported")]
1131 public void ReceiveBufferSizeDefault ()
1133 Socket sock = new Socket (AddressFamily.InterNetwork,
1137 Assertion.AssertEquals ("ReceiveBufferSizeDefault",
1138 8192, sock.ReceiveBufferSize);
1145 [Ignore("System.Net.Sockets.Socket.ReseiveBufferSize property is not supported")]
1147 public void ReceiveBufferSizeDefaultUdp ()
1149 Socket sock = new Socket (AddressFamily.InterNetwork,
1153 Assertion.AssertEquals ("ReceiveBufferSizeDefaultUdp",
1154 8192, sock.ReceiveBufferSize);
1161 [Ignore ("System.Net.Sockets.Socket.ReseiveBufferSize property is not supported")]
1163 public void ReceiveBufferSizeChange ()
1165 Socket sock = new Socket (AddressFamily.InterNetwork,
1169 sock.ReceiveBufferSize = 16384;
1171 Assertion.AssertEquals ("ReceiveBufferSizeChange",
1172 16384, sock.ReceiveBufferSize);
1178 [ExpectedException (typeof(ObjectDisposedException))]
1180 [Ignore("System.Net.Sockets.Socket.ReseiveBufferSize property is not supported")]
1182 public void ReceiveBufferSizeClosed ()
1184 Socket sock = new Socket (AddressFamily.InterNetwork,
1190 int val = sock.ReceiveBufferSize;
1195 [Ignore("System.Net.Sockets.Socket.SendBufferSize property is not supported")]
1197 public void SendBufferSizeDefault ()
1199 Socket sock = new Socket (AddressFamily.InterNetwork,
1203 Assertion.AssertEquals ("SendBufferSizeDefault",
1204 8192, sock.SendBufferSize);
1211 [Ignore("System.Net.Sockets.Socket.SendBufferSize property is not supported")]
1213 public void SendBufferSizeDefaultUdp ()
1215 Socket sock = new Socket (AddressFamily.InterNetwork,
1219 Assertion.AssertEquals ("SendBufferSizeDefaultUdp",
1220 8192, sock.SendBufferSize);
1227 [Ignore ("System.Net.Sockets.Socket.SendBufferSize property is not supported")]
1229 public void SendBufferSizeChange ()
1231 Socket sock = new Socket (AddressFamily.InterNetwork,
1235 sock.SendBufferSize = 16384;
1237 Assertion.AssertEquals ("SendBufferSizeChange",
1238 16384, sock.SendBufferSize);
1244 [ExpectedException (typeof(ObjectDisposedException))]
1246 [Ignore("System.Net.Sockets.Socket.SendBufferSize property is not supported")]
1248 public void SendBufferSizeClosed ()
1250 Socket sock = new Socket (AddressFamily.InterNetwork,
1256 int val = sock.SendBufferSize;
1259 /* No test for TTL default as it's platform dependent */
1262 [Ignore("System.Net.Sockets.Socket.Ttl property is not supported")]
1264 public void TtlChange ()
1266 Socket sock = new Socket (AddressFamily.InterNetwork,
1272 Assertion.AssertEquals ("TtlChange", 255, sock.Ttl);
1279 [Ignore("System.Net.Sockets.Socket.Ttl property is not supported")]
1281 public void TtlChangeOverflow ()
1283 Socket sock = new Socket (AddressFamily.InterNetwork,
1289 Assert.Fail ("TtlChangeOverflow #1");
1290 } catch (SocketException ex) {
1291 Assert.AreEqual (10022, ex.ErrorCode,
1292 "TtlChangeOverflow #2");
1294 Assert.Fail ("TtlChangeoverflow #3");
1300 /* Apparently you can set TTL=0 on the ms runtime!!
1303 Assert.Fail ("TtlChangeOverflow #4");
1304 } catch (SocketException ex) {
1305 Assert.AreEqual (10022, ex.ErrorCode,
1306 "TtlChangeOverflow #5");
1308 Assert.Fail ("TtlChangeOverflow #6");
1315 [ExpectedException (typeof(ObjectDisposedException))]
1317 [Ignore("System.Net.Sockets.Socket.Ttl property is not supported")]
1319 public void TtlClosed ()
1321 Socket sock = new Socket (AddressFamily.InterNetwork,
1332 [Ignore("System.Net.Sockets.Socket.UseOnlyOverlappedIO property is not supported")]
1334 public void UseOnlyOverlappedIODefault ()
1336 Socket sock = new Socket (AddressFamily.InterNetwork,
1340 Assertion.AssertEquals ("UseOnlyOverlappedIODefault",
1342 sock.UseOnlyOverlappedIO);
1348 // We need this because the Linux kernel in certain configurations
1349 // will end up rounding up the values passed on to the kernel
1350 // for socket send/receive timeouts.
1352 int Approximate (int target, int value)
1356 if (value > target-10 && value < target+10)
1363 [Ignore("System.Net.Sockets.Socket.UseOnlyOverlappedIO property is not supported")]
1365 public void UseOnlyOverlappedIOChange ()
1367 Socket sock = new Socket (AddressFamily.InterNetwork,
1371 sock.UseOnlyOverlappedIO = true;
1373 Assertion.AssertEquals ("UseOnlyOverlappedIOChange",
1375 sock.UseOnlyOverlappedIO);
1382 [Ignore("System.Net.Sockets.Socket.UseOnlyOverlappedIO property is not supported")]
1384 /* Should not throw an exception */
1385 public void UseOnlyOverlappedIOClosed ()
1387 Socket sock = new Socket (AddressFamily.InterNetwork,
1393 bool val = sock.UseOnlyOverlappedIO;
1398 [Ignore("System.Net.Sockets.Socket.SendTimeout property is not supported")]
1400 public void SendTimeoutDefault ()
1402 Socket sock = new Socket (AddressFamily.InterNetwork,
1406 Assertion.AssertEquals ("SendTimeoutDefault",
1407 0, sock.SendTimeout);
1414 [Ignore("System.Net.Sockets.Socket.SendTimeout property is not supported")]
1416 public void SendTimeoutChange ()
1418 Socket sock = new Socket (AddressFamily.InterNetwork,
1422 /* Should be rounded up to 500, according to
1423 * the MSDN docs, but the MS runtime doesn't
1425 sock.SendTimeout = 50;
1426 Assertion.AssertEquals ("SendTimeoutChange #1",
1427 50, Approximate (50, sock.SendTimeout));
1429 sock.SendTimeout = 2000;
1430 Assertion.AssertEquals ("SendTimeoutChange #2",
1431 2000, Approximate (2000, sock.SendTimeout));
1433 sock.SendTimeout = 0;
1434 Assertion.AssertEquals ("SendTimeoutChange #3",
1435 0, Approximate (0, sock.SendTimeout));
1437 /* Should be the same as setting 0 */
1438 sock.SendTimeout = -1;
1439 Assertion.AssertEquals ("SendTimeoutChange #4",
1440 0, sock.SendTimeout);
1442 sock.SendTimeout = 65536;
1443 Assertion.AssertEquals ("SendTimeoutChange #5",
1444 65536, Approximate (65536, sock.SendTimeout));
1447 sock.SendTimeout = -2;
1448 Assert.Fail ("SendTimeoutChange #8");
1449 } catch (ArgumentOutOfRangeException) {
1451 Assert.Fail ("SendTimeoutChange #9");
1458 [ExpectedException (typeof(ObjectDisposedException))]
1460 [Ignore("System.Net.Sockets.Socket.SendTimeout property is not supported")]
1462 public void SendTimeoutClosed ()
1464 Socket sock = new Socket (AddressFamily.InterNetwork,
1470 int val = sock.SendTimeout;
1475 [Ignore("System.Net.Sockets.Socket.ReceiveTimeout property is not supported")]
1477 public void ReceiveTimeoutDefault ()
1479 Socket sock = new Socket (AddressFamily.InterNetwork,
1483 Assertion.AssertEquals ("ReceiveTimeoutDefault",
1484 0, sock.ReceiveTimeout);
1491 [Ignore("System.Net.Sockets.Socket.ReceiveTimeout property is not supported")]
1493 public void ReceiveTimeoutChange ()
1495 Socket sock = new Socket (AddressFamily.InterNetwork,
1499 sock.ReceiveTimeout = 50;
1500 Assertion.AssertEquals ("ReceiveTimeoutChange #1",
1501 50, Approximate (50, sock.ReceiveTimeout));
1503 sock.ReceiveTimeout = 2000;
1504 Assertion.AssertEquals ("ReceiveTimeoutChange #2",
1505 2000, Approximate (2000, sock.ReceiveTimeout));
1507 sock.ReceiveTimeout = 0;
1508 Assertion.AssertEquals ("ReceiveTimeoutChange #3",
1509 0, sock.ReceiveTimeout);
1511 /* Should be the same as setting 0 */
1512 sock.ReceiveTimeout = -1;
1513 Assertion.AssertEquals ("ReceiveTimeoutChange #4",
1514 0, sock.ReceiveTimeout);
1516 sock.ReceiveTimeout = 65536;
1517 Assertion.AssertEquals ("ReceiveTimeoutChange #5",
1518 65536, Approximate (65536, sock.ReceiveTimeout));
1521 sock.ReceiveTimeout = -2;
1522 Assert.Fail ("ReceiveTimeoutChange #8");
1523 } catch (ArgumentOutOfRangeException) {
1525 Assert.Fail ("ReceiveTimeoutChange #9");
1532 [ExpectedException (typeof(ObjectDisposedException))]
1534 [Ignore("System.Net.Sockets.Socket.ReceiveTimeout property is not supported")]
1536 public void ReceiveTimeoutClosed ()
1538 Socket sock = new Socket (AddressFamily.InterNetwork,
1544 int val = sock.ReceiveTimeout;
1549 [Ignore("System.Net.Sockets.Socket.NoDelay property is not supported")]
1551 public void NoDelayDefaultTcp ()
1553 Socket sock = new Socket (AddressFamily.InterNetwork,
1557 Assertion.AssertEquals ("NoDelayDefaultTcp", false,
1565 [Ignore("System.Net.Sockets.Socket.NoDelay property is not supported")]
1567 public void NoDelayChangeTcp ()
1569 Socket sock = new Socket (AddressFamily.InterNetwork,
1573 sock.NoDelay = true;
1575 Assertion.AssertEquals ("NoDelayChangeTcp", true,
1583 [Ignore("System.Net.Sockets.Socket.NoDelay property is not supported")]
1585 public void NoDelayDefaultUdp ()
1587 Socket sock = new Socket (AddressFamily.InterNetwork,
1592 bool val = sock.NoDelay;
1593 Assert.Fail ("NoDelayDefaultUdp #1");
1594 } catch (SocketException ex) {
1595 Assert.AreEqual (10042, ex.ErrorCode,
1596 "NoDelayDefaultUdp #2");
1598 Assert.Fail ("NoDelayDefaultUdp #3");
1606 [Ignore("System.Net.Sockets.Socket.NoDelay property is not supported")]
1608 public void NoDelayChangeUdp ()
1610 Socket sock = new Socket (AddressFamily.InterNetwork,
1615 sock.NoDelay = true;
1616 Assert.Fail ("NoDelayChangeUdp #1");
1617 } catch (SocketException ex) {
1618 Assert.AreEqual (10042, ex.ErrorCode,
1619 "NoDelayChangeUdp #2");
1621 Assert.Fail ("NoDelayChangeUdp #3");
1628 [ExpectedException (typeof(ObjectDisposedException))]
1630 [Ignore("System.Net.Sockets.Socket.NoDelay property is not supported")]
1632 public void NoDelayClosed ()
1634 Socket sock = new Socket (AddressFamily.InterNetwork,
1640 bool val = sock.NoDelay;
1643 static bool BAAccepted = false;
1644 static Socket BASocket = null;
1645 static ManualResetEvent BACalledBack = new ManualResetEvent (false);
1647 private static void BACallback (IAsyncResult asyncResult)
1649 Socket sock = (Socket)asyncResult.AsyncState;
1651 BASocket = sock.EndAccept (asyncResult);
1654 BACalledBack.Set ();
1661 [ExpectedException (typeof(InvalidOperationException))]
1662 public void BeginAcceptNotBound ()
1664 Socket sock = new Socket (AddressFamily.InterNetwork,
1668 sock.BeginAccept (BACallback, sock);
1677 [ExpectedException (typeof(InvalidOperationException))]
1678 public void BeginAcceptNotListening ()
1680 Socket sock = new Socket (AddressFamily.InterNetwork,
1684 sock.Bind (new IPEndPoint (IPAddress.Any, 1236));
1686 sock.BeginAccept (BACallback, sock);
1692 public void BeginAccept ()
1694 Socket sock = new Socket (AddressFamily.InterNetwork,
1697 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
1703 BACalledBack.Reset ();
1705 sock.BeginAccept (BACallback, sock);
1707 Socket conn = new Socket (AddressFamily.InterNetwork,
1713 if (BACalledBack.WaitOne (2000, false) == false) {
1714 Assert.Fail ("BeginAccept wait timed out");
1717 Assertion.AssertEquals ("BeginAccept #1", true,
1719 Assertion.AssertEquals ("BeginAccept #2", true,
1720 BASocket.Connected);
1721 Assertion.AssertEquals ("BeginAccept #3", false,
1723 Assertion.AssertEquals ("BeginAccept #4", true,
1732 [ExpectedException (typeof(ObjectDisposedException))]
1733 public void BeginAcceptClosed ()
1735 Socket sock = new Socket (AddressFamily.InterNetwork,
1741 sock.BeginAccept (BACallback, sock);
1744 static bool BADAccepted = false;
1745 static Socket BADSocket = null;
1746 static byte[] BADBytes;
1747 static int BADByteCount;
1748 static ManualResetEvent BADCalledBack = new ManualResetEvent (false);
1750 private static void BADCallback (IAsyncResult asyncResult)
1752 Socket sock = (Socket)asyncResult.AsyncState;
1754 BADSocket = sock.EndAccept (out BADBytes,
1759 BADCalledBack.Set ();
1764 [Ignore ("System.Net.Sockets.Socket.BeginAccept(int,AsyncCallback,object) is not supported")]
1766 public void BeginAcceptData ()
1768 Socket sock = new Socket (AddressFamily.InterNetwork,
1771 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
1777 BADCalledBack.Reset ();
1779 sock.BeginAccept (256, BADCallback, sock);
1781 Socket conn = new Socket (AddressFamily.InterNetwork,
1784 byte[] send_bytes = new byte[] {10, 11, 12, 13};
1787 conn.Send (send_bytes);
1789 if (BADCalledBack.WaitOne (2000, false) == false) {
1790 Assert.Fail ("BeginAcceptData wait timed out");
1793 Assertion.AssertEquals ("BeginAcceptData #1", true,
1795 Assertion.AssertEquals ("BeginAcceptData #2", true,
1796 BADSocket.Connected);
1797 Assertion.AssertEquals ("BeginAcceptData #3", false,
1799 Assertion.AssertEquals ("BeginAcceptData #4", true,
1801 Assertion.AssertEquals ("BeginAcceptData #5",
1805 /* The MS runtime gives the returned data in a
1806 * much bigger array. TODO: investigate
1807 * whether it the size correlates to the first
1808 * parameter in BeginAccept()
1810 Assert.IsFalse (BADBytes.Length == send_bytes.Length,
1811 "BeginAcceptData #6");
1813 for(int i = 0; i < send_bytes.Length; i++) {
1814 Assertion.AssertEquals ("BeginAcceptData #" + (i+7).ToString (), send_bytes[i], BADBytes[i]);
1823 [ExpectedException (typeof(ObjectDisposedException))]
1825 [Ignore("System.Net.Sockets.Socket.BeginAccept(int,AsyncCallback,object) is not supported")]
1827 public void BeginAcceptDataClosed ()
1829 Socket sock = new Socket (AddressFamily.InterNetwork,
1835 sock.BeginAccept (256, BADCallback, sock);
1840 [Ignore("System.Net.Sockets.Socket.BeginAccept(Socket,int,AsyncCallback,object) is not supported")]
1842 public void BeginAcceptSocketUdp ()
1844 Socket sock = new Socket (AddressFamily.InterNetwork,
1847 Socket acc = new Socket (AddressFamily.InterNetwork,
1851 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
1858 sock.BeginAccept (acc, 256, BADCallback, sock);
1859 Assert.Fail ("BeginAcceptSocketUdp #1");
1860 } catch (SocketException ex) {
1861 Assertion.AssertEquals ("BeginAcceptSocketUdp #2", 10022, ex.ErrorCode);
1863 Assert.Fail ("BeginAcceptSocketUdp #3");
1872 [Ignore("System.Net.Sockets.Socket.BeginAccept(Socket,int,AsyncCallback,object) is not supported")]
1874 public void BeginAcceptSocketBound ()
1876 Socket sock = new Socket (AddressFamily.InterNetwork,
1879 Socket acc = new Socket (AddressFamily.InterNetwork,
1883 IPEndPoint ep1 = new IPEndPoint (IPAddress.Loopback,
1886 IPEndPoint ep2 = new IPEndPoint (IPAddress.Loopback,
1895 sock.BeginAccept (acc, 256, BADCallback, sock);
1896 Assert.Fail ("BeginAcceptSocketBound #1");
1897 } catch (InvalidOperationException) {
1899 Assert.Fail ("BeginAcceptSocketBound #2");
1908 [Ignore("System.Net.Sockets.Socket.BeginAccept(Socket,int,AsyncCallback,object) is not supported")]
1910 public void BeginAcceptSocket ()
1912 Socket sock = new Socket (AddressFamily.InterNetwork,
1915 Socket acc = new Socket (AddressFamily.InterNetwork,
1919 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
1925 BADCalledBack.Reset ();
1927 sock.BeginAccept (acc, 256, BADCallback, sock);
1929 Socket conn = new Socket (AddressFamily.InterNetwork,
1932 byte[] send_bytes = new byte[] {10, 11, 12, 13};
1935 conn.Send (send_bytes);
1937 if (BADCalledBack.WaitOne (2000, false) == false) {
1938 Assert.Fail ("BeginAcceptSocket wait timed out");
1941 Assertion.AssertEquals ("BeginAcceptSocket #1", true,
1943 Assertion.AssertEquals ("BeginAcceptSocket #2", true,
1944 BADSocket.Connected);
1945 Assertion.AssertEquals ("BeginAcceptSocket #3", false,
1947 Assertion.AssertEquals ("BeginAcceptSocket #4", true,
1949 Assertion.AssertEquals ("BeginAcceptSocket #5",
1952 Assertion.AssertEquals ("BeginAcceptSocket #6",
1953 AddressFamily.InterNetwork,
1955 Assertion.AssertEquals ("BeginAcceptSocket #7",
1958 Assertion.AssertEquals ("BeginAcceptSocket #8",
1961 Assertion.AssertEquals ("BeginAcceptSocket #9",
1963 acc.RemoteEndPoint);
1965 /* The MS runtime gives the returned data in a
1966 * much bigger array. TODO: investigate
1967 * whether it the size correlates to the first
1968 * parameter in BeginAccept()
1970 Assert.IsFalse (BADBytes.Length == send_bytes.Length,
1971 "BeginAcceptSocket #10");
1973 for(int i = 0; i < send_bytes.Length; i++) {
1974 Assertion.AssertEquals ("BeginAcceptSocket #" + (i+11).ToString (), send_bytes[i], BADBytes[i]);
1985 [Ignore("System.Net.Sockets.Socket.BeginAccept(Socket,int,AsyncCallback,object) is not supported")]
1987 public void BeginAcceptSocketClosed ()
1989 Socket sock = new Socket (AddressFamily.InterNetwork,
1992 Socket acc = new Socket (AddressFamily.InterNetwork,
1999 sock.BeginAccept (acc, 256, BADCallback, null);
2000 Assert.Fail ("BeginAcceptSocketClosed #1");
2001 } catch (ObjectDisposedException) {
2003 Assert.Fail ("BeginAcceptSocketClosed #2");
2011 [Ignore("System.Net.Sockets.Socket.BeginAccept(Socket,int,AsyncCallback,object) is not supported")]
2013 public void BeginAcceptSocketAccClosed ()
2015 Socket sock = new Socket (AddressFamily.InterNetwork,
2018 Socket acc = new Socket (AddressFamily.InterNetwork,
2021 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2029 BADCalledBack.Reset ();
2032 sock.BeginAccept (acc, 256, BADCallback, null);
2033 Assert.Fail ("BeginAcceptSocketAccClosed #1");
2034 } catch (ObjectDisposedException) {
2036 Assert.Fail ("BeginAcceptSocketAccClosed #2");
2042 static bool BCConnected = false;
2043 static ManualResetEvent BCCalledBack = new ManualResetEvent (false);
2045 private static void BCCallback (IAsyncResult asyncResult)
2047 Socket sock = (Socket)asyncResult.AsyncState;
2049 sock.EndConnect (asyncResult);
2052 BCCalledBack.Set ();
2057 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress,int,AsyncCallback,object) is not supported")]
2059 public void BeginConnectAddressPort ()
2061 Socket sock = new Socket (AddressFamily.InterNetwork,
2064 Socket listen = new Socket (AddressFamily.InterNetwork,
2067 IPAddress ip = IPAddress.Loopback;
2068 IPEndPoint ep = new IPEndPoint (ip, 1244);
2073 BCCalledBack.Reset ();
2075 BCConnected = false;
2077 sock.BeginConnect (ip, 1244, BCCallback, sock);
2079 if (BCCalledBack.WaitOne (2000, false) == false) {
2080 Assert.Fail ("BeginConnectAddressPort wait timed out");
2083 Assertion.AssertEquals ("BeginConnectAddressPort #1",
2092 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress,int,AsyncCallback,object) is not supported")]
2094 public void BeginConnectAddressPortNull ()
2096 Socket sock = new Socket (AddressFamily.InterNetwork,
2099 IPAddress ip = null;
2102 sock.BeginConnect (ip, 1244, BCCallback,
2104 Assert.Fail ("BeginConnectAddressPortNull #1");
2105 } catch (ArgumentNullException) {
2107 Assert.Fail ("BeginConnectAddressPortNull #2");
2115 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress,int,AsyncCallback,object) is not supported")]
2117 public void BeginConnectAddressPortListen ()
2119 Socket sock = new Socket (AddressFamily.InterNetwork,
2122 IPAddress ip = IPAddress.Loopback;
2123 IPEndPoint ep = new IPEndPoint (ip, 1245);
2129 sock.BeginConnect (ip, 1245, BCCallback, sock);
2130 Assert.Fail ("BeginConnectAddressPortListen #1");
2131 } catch (InvalidOperationException) {
2133 Assert.Fail ("BeginConnectAddressPortListen #2");
2140 [ExpectedException (typeof(ObjectDisposedException))]
2142 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress,int,AsyncCallback,object) is not supported")]
2144 public void BeginConnectAddressPortClosed ()
2146 Socket sock = new Socket (AddressFamily.InterNetwork,
2149 IPAddress ip = IPAddress.Loopback;
2153 sock.BeginConnect (ip, 1244, BCCallback, sock);
2158 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress[],int,AsyncCallback,object) is not supported")]
2160 public void BeginConnectMultiple ()
2162 Socket sock = new Socket (AddressFamily.InterNetwork,
2165 Socket listen = new Socket (AddressFamily.InterNetwork,
2168 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2170 IPAddress[] ips = new IPAddress[4];
2172 ips[0] = IPAddress.Parse ("127.0.0.4");
2173 ips[1] = IPAddress.Parse ("127.0.0.3");
2174 ips[2] = IPAddress.Parse ("127.0.0.2");
2175 ips[3] = IPAddress.Parse ("127.0.0.1");
2180 BCCalledBack.Reset ();
2182 BCConnected = false;
2184 sock.BeginConnect (ips, 1246, BCCallback, sock);
2186 /* Longer wait here, because the ms runtime
2187 * takes a lot longer to not connect
2189 if (BCCalledBack.WaitOne (10000, false) == false) {
2190 Assert.Fail ("BeginConnectMultiple wait failed");
2193 Assertion.AssertEquals ("BeginConnectMultiple #1",
2195 Assertion.AssertEquals ("BeginConnectMultiple #2",
2196 AddressFamily.InterNetwork,
2197 sock.RemoteEndPoint.AddressFamily);
2198 IPEndPoint remep = (IPEndPoint)sock.RemoteEndPoint;
2200 Assertion.AssertEquals ("BeginConnectMultiple #2",
2210 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress[],int,AsyncCallback,object) is not supported")]
2212 public void BeginConnectMultipleNull ()
2214 Socket sock = new Socket (AddressFamily.InterNetwork,
2217 IPAddress[] ips = null;
2220 sock.BeginConnect (ips, 1246, BCCallback,
2222 Assert.Fail ("BeginConnectMultipleNull #1");
2223 } catch (ArgumentNullException) {
2225 Assert.Fail ("BeginConnectMultipleNull #2");
2233 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress[],int,AsyncCallback,object) is not supported")]
2235 public void BeginConnectMultipleListen ()
2237 Socket sock = new Socket (AddressFamily.InterNetwork,
2240 IPAddress[] ips = new IPAddress[4];
2241 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2244 ips[0] = IPAddress.Parse ("127.0.0.4");
2245 ips[1] = IPAddress.Parse ("127.0.0.3");
2246 ips[2] = IPAddress.Parse ("127.0.0.2");
2247 ips[3] = IPAddress.Parse ("127.0.0.1");
2253 sock.BeginConnect (ips, 1247, BCCallback,
2255 Assert.Fail ("BeginConnectMultipleListen #1");
2256 } catch (InvalidOperationException) {
2258 Assert.Fail ("BeginConnectMultipleListen #2");
2265 [ExpectedException (typeof(ObjectDisposedException))]
2267 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress[],int,AsyncCallback,object) is not supported")]
2269 public void BeginConnectMultipleClosed ()
2271 Socket sock = new Socket (AddressFamily.InterNetwork,
2274 IPAddress[] ips = new IPAddress[4];
2276 ips[0] = IPAddress.Parse ("127.0.0.4");
2277 ips[1] = IPAddress.Parse ("127.0.0.3");
2278 ips[2] = IPAddress.Parse ("127.0.0.2");
2279 ips[3] = IPAddress.Parse ("127.0.0.1");
2283 sock.BeginConnect (ips, 1247, BCCallback, sock);
2288 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress,int,AsyncCallback,object) is not supported")]
2290 public void BeginConnectHostPortNull ()
2292 Socket sock = new Socket (AddressFamily.InterNetwork,
2297 sock.BeginConnect ((string)null, 0,
2299 Assert.Fail ("BeginConnectHostPort #1");
2300 } catch (ArgumentNullException) {
2302 Assert.Fail ("BeginConnectHostPort #2");
2310 [Ignore("System.Net.Sockets.Socket.BeginConnect(string,int,AsyncCallback,object) is not supported")]
2312 public void BeginConnectHostPortListen ()
2314 Socket sock = new Socket (AddressFamily.InterNetwork,
2317 IPAddress ip = IPAddress.Loopback;
2318 IPEndPoint ep = new IPEndPoint (ip, 1248);
2324 sock.BeginConnect ("localhost", 1248,
2326 Assert.Fail ("BeginConnectHostPortListen #1");
2327 } catch (InvalidOperationException) {
2329 Assert.Fail ("BeginConnectHostPortListen #2");
2336 [Category ("NotWorking")] // Need to pick a non-IP AddressFamily that "works" on both mono and ms, this one only works on ms
2337 public void BeginConnectHostPortNotIP ()
2339 Socket sock = new Socket (AddressFamily.NetBios,
2340 SocketType.Seqpacket,
2341 ProtocolType.Unspecified);
2344 sock.BeginConnect ("localhost", 0, BCCallback,
2346 Assert.Fail ("BeginConnectHostPortNotIP #1");
2347 } catch (NotSupportedException) {
2349 Assert.Fail ("BeginConnectHostPortNotIP #2");
2356 [ExpectedException (typeof(ObjectDisposedException))]
2358 [Ignore("System.Net.Sockets.Socket.BeginConnect(string,int,AsyncCallback,object) is not supported")]
2360 public void BeginConnectHostPortClosed ()
2362 Socket sock = new Socket (AddressFamily.InterNetwork,
2368 sock.BeginConnect ("localhost", 0, BCCallback, sock);
2371 static bool BDDisconnected = false;
2372 static ManualResetEvent BDCalledBack = new ManualResetEvent (false);
2374 private static void BDCallback (IAsyncResult asyncResult)
2376 Socket sock = (Socket)asyncResult.AsyncState;
2378 sock.EndDisconnect (asyncResult);
2379 BDDisconnected = true;
2381 BDCalledBack.Set ();
2385 [Category ("NotDotNet")] // "Needs XP or later"
2387 [Ignore("System.Net.Sockets.Socket.BeginDisconnect method is not supported")]
2389 public void BeginDisconnect ()
2391 Socket sock = new Socket (AddressFamily.InterNetwork,
2394 Socket listen = new Socket (AddressFamily.InterNetwork,
2397 IPAddress ip = IPAddress.Loopback;
2398 IPEndPoint ep = new IPEndPoint (ip, 1254);
2403 sock.Connect (ip, 1254);
2405 Assertion.AssertEquals ("BeginDisconnect #1", true,
2408 sock.Shutdown (SocketShutdown.Both);
2410 BDCalledBack.Reset ();
2411 BDDisconnected = false;
2413 sock.BeginDisconnect (false, BDCallback, sock);
2415 if (BDCalledBack.WaitOne (2000, false) == false) {
2416 Assert.Fail ("BeginDisconnect wait timed out");
2419 Assertion.AssertEquals ("BeginDisconnect #2", true,
2421 Assertion.AssertEquals ("BeginDisconnect #3", false,
2429 public void BeginReceiveSocketError ()
2434 public void BeginReceiveGeneric ()
2439 public void BeginReceiveGenericSocketError ()
2443 private static void BSCallback (IAsyncResult asyncResult)
2445 Socket sock = (Socket)asyncResult.AsyncState;
2447 sock.EndSend (asyncResult);
2452 [Ignore ("System.Net.Sockets.Socket.BeginSend(byte[] ...) is not supported")]
2454 public void BeginSendNotConnected ()
2456 Socket sock = new Socket (AddressFamily.InterNetwork,
2460 byte[] send_bytes = new byte[] {10, 11, 12, 13};
2463 sock.BeginSend (send_bytes, 0,
2465 SocketFlags.None, BSCallback,
2467 Assert.Fail ("BeginSendNotConnected #1");
2468 } catch (SocketException ex) {
2469 Assertion.AssertEquals ("BeginSendNotConnected #2", 10057, ex.ErrorCode);
2471 Assert.Fail ("BeginSendNotConnected #3");
2478 public void BeginSendSocketError ()
2483 public void BeginSendGeneric ()
2488 public void BeginSendGenericSocketError ()
2493 public void BindTwice ()
2495 Socket sock = new Socket (AddressFamily.InterNetwork,
2498 IPEndPoint ep1 = new IPEndPoint (IPAddress.Loopback,
2500 IPEndPoint ep2 = new IPEndPoint (IPAddress.Loopback,
2507 Assert.Fail ("BindTwice #1");
2508 } catch (SocketException ex) {
2509 Assertion.AssertEquals ("BindTwice #2",
2510 10022, ex.ErrorCode);
2512 Assert.Fail ("BindTwice #3");
2520 [Ignore ("System.Net.Sockets.Socket.Close(int) method is not supported")]
2522 public void Close ()
2524 Socket sock = new Socket (AddressFamily.InterNetwork,
2527 Socket listen = new Socket (AddressFamily.InterNetwork,
2530 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2538 Assertion.AssertEquals ("Close #1", true,
2543 Thread.Sleep (3000);
2545 Assertion.AssertEquals ("Close #2", false,
2553 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress,int) is not supported")]
2555 public void ConnectAddressPort ()
2557 Socket sock = new Socket (AddressFamily.InterNetwork,
2560 Socket listen = new Socket (AddressFamily.InterNetwork,
2563 IPAddress ip = IPAddress.Loopback;
2564 IPEndPoint ep = new IPEndPoint (ip, 1249);
2569 sock.Connect (ip, 1249);
2571 Assertion.AssertEquals ("ConnectAddressPort #1",
2572 true, sock.Connected);
2580 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress,int) is not supported")]
2582 public void ConnectAddressPortNull ()
2584 Socket sock = new Socket (AddressFamily.InterNetwork,
2587 IPAddress ip = null;
2590 sock.Connect (ip, 1249);
2591 Assert.Fail ("ConnectAddressPortNull #1");
2592 } catch (ArgumentNullException) {
2594 Assert.Fail ("ConnectAddressPortNull #2");
2602 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress,int) is not supported")]
2604 public void ConnectAddressPortListen ()
2606 Socket sock = new Socket (AddressFamily.InterNetwork,
2609 IPAddress ip = IPAddress.Loopback;
2610 IPEndPoint ep = new IPEndPoint (ip, 1250);
2616 sock.Connect (ip, 1250);
2617 Assert.Fail ("ConnectAddressPortListen #1");
2618 } catch (InvalidOperationException) {
2620 Assert.Fail ("ConnectAddressPortListen #2");
2627 [ExpectedException (typeof(ObjectDisposedException))]
2629 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress,int) is not supported")]
2631 public void ConnectAddressPortClosed ()
2633 Socket sock = new Socket (AddressFamily.InterNetwork,
2636 IPAddress ip = IPAddress.Loopback;
2640 sock.Connect (ip, 1250);
2645 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress[],int) is not supported")]
2647 public void ConnectMultiple ()
2649 Socket sock = new Socket (AddressFamily.InterNetwork,
2652 Socket listen = new Socket (AddressFamily.InterNetwork,
2655 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2657 IPAddress[] ips = new IPAddress[4];
2659 ips[0] = IPAddress.Parse ("127.0.0.4");
2660 ips[1] = IPAddress.Parse ("127.0.0.3");
2661 ips[2] = IPAddress.Parse ("127.0.0.2");
2662 ips[3] = IPAddress.Parse ("127.0.0.1");
2667 sock.Connect (ips, 1251);
2669 Assertion.AssertEquals ("ConnectMultiple #1",
2670 true, sock.Connected);
2671 Assertion.AssertEquals ("ConnectMultiple #2",
2672 AddressFamily.InterNetwork,
2673 sock.RemoteEndPoint.AddressFamily);
2674 IPEndPoint remep = (IPEndPoint)sock.RemoteEndPoint;
2676 Assertion.AssertEquals ("ConnectMultiple #2",
2686 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress[],int) is not supported")]
2688 public void ConnectMultipleNull ()
2690 Socket sock = new Socket (AddressFamily.InterNetwork,
2693 IPAddress[] ips = null;
2696 sock.Connect (ips, 1251);
2697 Assert.Fail ("ConnectMultipleNull #1");
2698 } catch (ArgumentNullException) {
2700 Assert.Fail ("ConnectMultipleNull #2");
2708 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress[],int) is not supported")]
2710 public void ConnectMultipleListen ()
2712 Socket sock = new Socket (AddressFamily.InterNetwork,
2715 IPAddress[] ips = new IPAddress[4];
2716 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2719 ips[0] = IPAddress.Parse ("127.0.0.4");
2720 ips[1] = IPAddress.Parse ("127.0.0.3");
2721 ips[2] = IPAddress.Parse ("127.0.0.2");
2722 ips[3] = IPAddress.Parse ("127.0.0.1");
2728 sock.Connect (ips, 1252);
2729 Assert.Fail ("ConnectMultipleListen #1");
2730 } catch (InvalidOperationException) {
2732 Assert.Fail ("ConnectMultipleListen #2");
2739 [ExpectedException (typeof(ObjectDisposedException))]
2741 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress[],int) is not supported")]
2743 public void ConnectMultipleClosed ()
2745 Socket sock = new Socket (AddressFamily.InterNetwork,
2748 IPAddress[] ips = new IPAddress[4];
2750 ips[0] = IPAddress.Parse ("127.0.0.4");
2751 ips[1] = IPAddress.Parse ("127.0.0.3");
2752 ips[2] = IPAddress.Parse ("127.0.0.2");
2753 ips[3] = IPAddress.Parse ("127.0.0.1");
2757 sock.Connect (ips, 1252);
2762 [Ignore("System.Net.Sockets.Socket.Connect(string,int) is not supported")]
2764 public void ConnectHostPortNull ()
2766 Socket sock = new Socket (AddressFamily.InterNetwork,
2771 sock.Connect ((string)null, 0);
2772 Assert.Fail ("ConnectHostPort #1");
2773 } catch (ArgumentNullException) {
2775 Assert.Fail ("ConnectHostPort #2");
2783 [Ignore("System.Net.Sockets.Socket.Connect(string,int) is not supported")]
2785 public void ConnectHostPortListen ()
2787 Socket sock = new Socket (AddressFamily.InterNetwork,
2790 IPAddress ip = IPAddress.Loopback;
2791 IPEndPoint ep = new IPEndPoint (ip, 1253);
2797 sock.Connect ("localhost", 1253);
2798 Assert.Fail ("ConnectHostPortListen #1");
2799 } catch (InvalidOperationException) {
2801 Assert.Fail ("ConnectHostPortListen #2");
2808 [Category ("NotWorking")] // Need to pick a non-IP AddressFamily that "works" on both mono and ms, this one only works on ms
2809 public void ConnectHostPortNotIP ()
2811 Socket sock = new Socket (AddressFamily.NetBios,
2812 SocketType.Seqpacket,
2813 ProtocolType.Unspecified);
2816 sock.Connect ("localhost", 0);
2817 Assert.Fail ("ConnectHostPortNotIP #1");
2818 } catch (NotSupportedException) {
2820 Assert.Fail ("ConnectHostPortNotIP #2");
2827 [ExpectedException (typeof(ObjectDisposedException))]
2829 [Ignore("System.Net.Sockets.Socket.Connect(string,int) is not supported")]
2831 public void ConnectHostPortClosed ()
2833 Socket sock = new Socket (AddressFamily.InterNetwork,
2839 sock.Connect ("localhost", 0);
2843 [Category ("NotDotNet")] // "Needs XP or later"
2845 [Ignore ("System.Net.Sockets.Socket.Connect(IPAddress,int) is not supported")]
2847 public void Disconnect ()
2849 Socket sock = new Socket (AddressFamily.InterNetwork,
2852 Socket listen = new Socket (AddressFamily.InterNetwork,
2855 IPAddress ip = IPAddress.Loopback;
2856 IPEndPoint ep = new IPEndPoint (ip, 1255);
2861 sock.Connect (ip, 1255);
2863 Assertion.AssertEquals ("Disconnect #1", true,
2866 sock.Shutdown (SocketShutdown.Both);
2868 sock.Disconnect (false);
2870 Assertion.AssertEquals ("BeginDisconnect #3", false,
2878 public void DuplicateAndClose ()
2883 public void IOControl ()
2888 public void ReceiveGeneric ()
2893 public void ReceiveGenericSocketFlags ()
2898 public void ReceiveGenericSocketFlagsSocketError ()
2903 public void SendGeneric ()
2908 public void SendGenericSocketFlags ()
2913 public void SendGenericSocketFlagsSocketError ()
2918 public void ListenNotBound ()
2920 Socket sock = new Socket (AddressFamily.InterNetwork,
2926 Assert.Fail ("ListenNotBound #1");
2927 } catch (SocketException ex) {
2928 Assertion.AssertEquals ("ListenNotBound #2",
2929 10022, ex.ErrorCode);
2931 Assert.Fail ("ListenNotBound #3");