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)
1753 Socket sock = (Socket)asyncResult.AsyncState;
1755 BADSocket = sock.EndAccept (out BADBytes,
1760 BADCalledBack.Set ();
1766 [Ignore ("System.Net.Sockets.Socket.BeginAccept(int,AsyncCallback,object) is not supported")]
1768 public void BeginAcceptData ()
1770 Socket sock = new Socket (AddressFamily.InterNetwork,
1773 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
1779 BADCalledBack.Reset ();
1781 sock.BeginAccept (256, BADCallback, sock);
1783 Socket conn = new Socket (AddressFamily.InterNetwork,
1786 byte[] send_bytes = new byte[] {10, 11, 12, 13};
1789 conn.Send (send_bytes);
1791 if (BADCalledBack.WaitOne (2000, false) == false) {
1792 Assert.Fail ("BeginAcceptData wait timed out");
1795 Assertion.AssertEquals ("BeginAcceptData #1", true,
1797 Assertion.AssertEquals ("BeginAcceptData #2", true,
1798 BADSocket.Connected);
1799 Assertion.AssertEquals ("BeginAcceptData #3", false,
1801 Assertion.AssertEquals ("BeginAcceptData #4", true,
1803 Assertion.AssertEquals ("BeginAcceptData #5",
1807 /* The MS runtime gives the returned data in a
1808 * much bigger array. TODO: investigate
1809 * whether it the size correlates to the first
1810 * parameter in BeginAccept()
1812 Assert.IsFalse (BADBytes.Length == send_bytes.Length,
1813 "BeginAcceptData #6");
1815 for(int i = 0; i < send_bytes.Length; i++) {
1816 Assertion.AssertEquals ("BeginAcceptData #" + (i+7).ToString (), send_bytes[i], BADBytes[i]);
1825 [ExpectedException (typeof(ObjectDisposedException))]
1827 [Ignore("System.Net.Sockets.Socket.BeginAccept(int,AsyncCallback,object) is not supported")]
1829 public void BeginAcceptDataClosed ()
1831 Socket sock = new Socket (AddressFamily.InterNetwork,
1837 sock.BeginAccept (256, BADCallback, sock);
1842 [Ignore("System.Net.Sockets.Socket.BeginAccept(Socket,int,AsyncCallback,object) is not supported")]
1844 public void BeginAcceptSocketUdp ()
1846 Socket sock = new Socket (AddressFamily.InterNetwork,
1849 Socket acc = new Socket (AddressFamily.InterNetwork,
1853 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
1860 sock.BeginAccept (acc, 256, BADCallback, sock);
1861 Assert.Fail ("BeginAcceptSocketUdp #1");
1862 } catch (SocketException ex) {
1863 Assertion.AssertEquals ("BeginAcceptSocketUdp #2", 10022, ex.ErrorCode);
1865 Assert.Fail ("BeginAcceptSocketUdp #3");
1874 [Ignore("System.Net.Sockets.Socket.BeginAccept(Socket,int,AsyncCallback,object) is not supported")]
1876 public void BeginAcceptSocketBound ()
1878 Socket sock = new Socket (AddressFamily.InterNetwork,
1881 Socket acc = new Socket (AddressFamily.InterNetwork,
1885 IPEndPoint ep1 = new IPEndPoint (IPAddress.Loopback,
1888 IPEndPoint ep2 = new IPEndPoint (IPAddress.Loopback,
1897 sock.BeginAccept (acc, 256, BADCallback, sock);
1898 Assert.Fail ("BeginAcceptSocketBound #1");
1899 } catch (InvalidOperationException) {
1901 Assert.Fail ("BeginAcceptSocketBound #2");
1910 [Ignore("System.Net.Sockets.Socket.BeginAccept(Socket,int,AsyncCallback,object) is not supported")]
1912 public void BeginAcceptSocket ()
1914 Socket sock = new Socket (AddressFamily.InterNetwork,
1917 Socket acc = new Socket (AddressFamily.InterNetwork,
1921 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
1927 BADCalledBack.Reset ();
1929 sock.BeginAccept (acc, 256, BADCallback, sock);
1931 Socket conn = new Socket (AddressFamily.InterNetwork,
1934 byte[] send_bytes = new byte[] {10, 11, 12, 13};
1937 conn.Send (send_bytes);
1939 if (BADCalledBack.WaitOne (2000, false) == false) {
1940 Assert.Fail ("BeginAcceptSocket wait timed out");
1943 Assertion.AssertEquals ("BeginAcceptSocket #1", true,
1945 Assertion.AssertEquals ("BeginAcceptSocket #2", true,
1946 BADSocket.Connected);
1947 Assertion.AssertEquals ("BeginAcceptSocket #3", false,
1949 Assertion.AssertEquals ("BeginAcceptSocket #4", true,
1951 Assertion.AssertEquals ("BeginAcceptSocket #5",
1954 Assertion.AssertEquals ("BeginAcceptSocket #6",
1955 AddressFamily.InterNetwork,
1957 Assertion.AssertEquals ("BeginAcceptSocket #7",
1960 Assertion.AssertEquals ("BeginAcceptSocket #8",
1963 Assertion.AssertEquals ("BeginAcceptSocket #9",
1965 acc.RemoteEndPoint);
1967 /* The MS runtime gives the returned data in a
1968 * much bigger array. TODO: investigate
1969 * whether it the size correlates to the first
1970 * parameter in BeginAccept()
1972 Assert.IsFalse (BADBytes.Length == send_bytes.Length,
1973 "BeginAcceptSocket #10");
1975 for(int i = 0; i < send_bytes.Length; i++) {
1976 Assertion.AssertEquals ("BeginAcceptSocket #" + (i+11).ToString (), send_bytes[i], BADBytes[i]);
1987 [Ignore("System.Net.Sockets.Socket.BeginAccept(Socket,int,AsyncCallback,object) is not supported")]
1989 public void BeginAcceptSocketClosed ()
1991 Socket sock = new Socket (AddressFamily.InterNetwork,
1994 Socket acc = new Socket (AddressFamily.InterNetwork,
2001 sock.BeginAccept (acc, 256, BADCallback, null);
2002 Assert.Fail ("BeginAcceptSocketClosed #1");
2003 } catch (ObjectDisposedException) {
2005 Assert.Fail ("BeginAcceptSocketClosed #2");
2013 [Ignore("System.Net.Sockets.Socket.BeginAccept(Socket,int,AsyncCallback,object) is not supported")]
2015 public void BeginAcceptSocketAccClosed ()
2017 Socket sock = new Socket (AddressFamily.InterNetwork,
2020 Socket acc = new Socket (AddressFamily.InterNetwork,
2023 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2031 BADCalledBack.Reset ();
2034 sock.BeginAccept (acc, 256, BADCallback, null);
2035 Assert.Fail ("BeginAcceptSocketAccClosed #1");
2036 } catch (ObjectDisposedException) {
2038 Assert.Fail ("BeginAcceptSocketAccClosed #2");
2044 static bool BCConnected = false;
2045 static ManualResetEvent BCCalledBack = new ManualResetEvent (false);
2047 private static void BCCallback (IAsyncResult asyncResult)
2049 Socket sock = (Socket)asyncResult.AsyncState;
2051 sock.EndConnect (asyncResult);
2054 BCCalledBack.Set ();
2059 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress,int,AsyncCallback,object) is not supported")]
2061 public void BeginConnectAddressPort ()
2063 Socket sock = new Socket (AddressFamily.InterNetwork,
2066 Socket listen = new Socket (AddressFamily.InterNetwork,
2069 IPAddress ip = IPAddress.Loopback;
2070 IPEndPoint ep = new IPEndPoint (ip, 1244);
2075 BCCalledBack.Reset ();
2077 BCConnected = false;
2079 sock.BeginConnect (ip, 1244, BCCallback, sock);
2081 if (BCCalledBack.WaitOne (2000, false) == false) {
2082 Assert.Fail ("BeginConnectAddressPort wait timed out");
2085 Assertion.AssertEquals ("BeginConnectAddressPort #1",
2094 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress,int,AsyncCallback,object) is not supported")]
2096 public void BeginConnectAddressPortNull ()
2098 Socket sock = new Socket (AddressFamily.InterNetwork,
2101 IPAddress ip = null;
2104 sock.BeginConnect (ip, 1244, BCCallback,
2106 Assert.Fail ("BeginConnectAddressPortNull #1");
2107 } catch (ArgumentNullException) {
2109 Assert.Fail ("BeginConnectAddressPortNull #2");
2117 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress,int,AsyncCallback,object) is not supported")]
2119 public void BeginConnectAddressPortListen ()
2121 Socket sock = new Socket (AddressFamily.InterNetwork,
2124 IPAddress ip = IPAddress.Loopback;
2125 IPEndPoint ep = new IPEndPoint (ip, 1245);
2131 sock.BeginConnect (ip, 1245, BCCallback, sock);
2132 Assert.Fail ("BeginConnectAddressPortListen #1");
2133 } catch (InvalidOperationException) {
2135 Assert.Fail ("BeginConnectAddressPortListen #2");
2142 [ExpectedException (typeof(ObjectDisposedException))]
2144 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress,int,AsyncCallback,object) is not supported")]
2146 public void BeginConnectAddressPortClosed ()
2148 Socket sock = new Socket (AddressFamily.InterNetwork,
2151 IPAddress ip = IPAddress.Loopback;
2155 sock.BeginConnect (ip, 1244, BCCallback, sock);
2160 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress[],int,AsyncCallback,object) is not supported")]
2162 public void BeginConnectMultiple ()
2164 Socket sock = new Socket (AddressFamily.InterNetwork,
2167 Socket listen = new Socket (AddressFamily.InterNetwork,
2170 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2172 IPAddress[] ips = new IPAddress[4];
2174 ips[0] = IPAddress.Parse ("127.0.0.4");
2175 ips[1] = IPAddress.Parse ("127.0.0.3");
2176 ips[2] = IPAddress.Parse ("127.0.0.2");
2177 ips[3] = IPAddress.Parse ("127.0.0.1");
2182 BCCalledBack.Reset ();
2184 BCConnected = false;
2186 sock.BeginConnect (ips, 1246, BCCallback, sock);
2188 /* Longer wait here, because the ms runtime
2189 * takes a lot longer to not connect
2191 if (BCCalledBack.WaitOne (10000, false) == false) {
2192 Assert.Fail ("BeginConnectMultiple wait failed");
2195 Assertion.AssertEquals ("BeginConnectMultiple #1",
2197 Assertion.AssertEquals ("BeginConnectMultiple #2",
2198 AddressFamily.InterNetwork,
2199 sock.RemoteEndPoint.AddressFamily);
2200 IPEndPoint remep = (IPEndPoint)sock.RemoteEndPoint;
2202 Assertion.AssertEquals ("BeginConnectMultiple #2",
2212 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress[],int,AsyncCallback,object) is not supported")]
2214 public void BeginConnectMultipleNull ()
2216 Socket sock = new Socket (AddressFamily.InterNetwork,
2219 IPAddress[] ips = null;
2222 sock.BeginConnect (ips, 1246, BCCallback,
2224 Assert.Fail ("BeginConnectMultipleNull #1");
2225 } catch (ArgumentNullException) {
2227 Assert.Fail ("BeginConnectMultipleNull #2");
2235 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress[],int,AsyncCallback,object) is not supported")]
2237 public void BeginConnectMultipleListen ()
2239 Socket sock = new Socket (AddressFamily.InterNetwork,
2242 IPAddress[] ips = new IPAddress[4];
2243 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2246 ips[0] = IPAddress.Parse ("127.0.0.4");
2247 ips[1] = IPAddress.Parse ("127.0.0.3");
2248 ips[2] = IPAddress.Parse ("127.0.0.2");
2249 ips[3] = IPAddress.Parse ("127.0.0.1");
2255 sock.BeginConnect (ips, 1247, BCCallback,
2257 Assert.Fail ("BeginConnectMultipleListen #1");
2258 } catch (InvalidOperationException) {
2260 Assert.Fail ("BeginConnectMultipleListen #2");
2267 [ExpectedException (typeof(ObjectDisposedException))]
2269 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress[],int,AsyncCallback,object) is not supported")]
2271 public void BeginConnectMultipleClosed ()
2273 Socket sock = new Socket (AddressFamily.InterNetwork,
2276 IPAddress[] ips = new IPAddress[4];
2278 ips[0] = IPAddress.Parse ("127.0.0.4");
2279 ips[1] = IPAddress.Parse ("127.0.0.3");
2280 ips[2] = IPAddress.Parse ("127.0.0.2");
2281 ips[3] = IPAddress.Parse ("127.0.0.1");
2285 sock.BeginConnect (ips, 1247, BCCallback, sock);
2290 [Ignore("System.Net.Sockets.Socket.BeginConnect(IPAddress,int,AsyncCallback,object) is not supported")]
2292 public void BeginConnectHostPortNull ()
2294 Socket sock = new Socket (AddressFamily.InterNetwork,
2299 sock.BeginConnect ((string)null, 0,
2301 Assert.Fail ("BeginConnectHostPort #1");
2302 } catch (ArgumentNullException) {
2304 Assert.Fail ("BeginConnectHostPort #2");
2312 [Ignore("System.Net.Sockets.Socket.BeginConnect(string,int,AsyncCallback,object) is not supported")]
2314 public void BeginConnectHostPortListen ()
2316 Socket sock = new Socket (AddressFamily.InterNetwork,
2319 IPAddress ip = IPAddress.Loopback;
2320 IPEndPoint ep = new IPEndPoint (ip, 1248);
2326 sock.BeginConnect ("localhost", 1248,
2328 Assert.Fail ("BeginConnectHostPortListen #1");
2329 } catch (InvalidOperationException) {
2331 Assert.Fail ("BeginConnectHostPortListen #2");
2338 [Category ("NotWorking")] // Need to pick a non-IP AddressFamily that "works" on both mono and ms, this one only works on ms
2339 public void BeginConnectHostPortNotIP ()
2341 Socket sock = new Socket (AddressFamily.NetBios,
2342 SocketType.Seqpacket,
2343 ProtocolType.Unspecified);
2346 sock.BeginConnect ("localhost", 0, BCCallback,
2348 Assert.Fail ("BeginConnectHostPortNotIP #1");
2349 } catch (NotSupportedException) {
2351 Assert.Fail ("BeginConnectHostPortNotIP #2");
2358 [ExpectedException (typeof(ObjectDisposedException))]
2360 [Ignore("System.Net.Sockets.Socket.BeginConnect(string,int,AsyncCallback,object) is not supported")]
2362 public void BeginConnectHostPortClosed ()
2364 Socket sock = new Socket (AddressFamily.InterNetwork,
2370 sock.BeginConnect ("localhost", 0, BCCallback, sock);
2373 static bool BDDisconnected = false;
2374 static ManualResetEvent BDCalledBack = new ManualResetEvent (false);
2376 private static void BDCallback (IAsyncResult asyncResult)
2379 Socket sock = (Socket)asyncResult.AsyncState;
2381 sock.EndDisconnect (asyncResult);
2382 BDDisconnected = true;
2384 BDCalledBack.Set ();
2389 [Category ("NotDotNet")] // "Needs XP or later"
2391 [Ignore("System.Net.Sockets.Socket.BeginDisconnect method is not supported")]
2393 public void BeginDisconnect ()
2396 Socket sock = new Socket (AddressFamily.InterNetwork,
2399 Socket listen = new Socket (AddressFamily.InterNetwork,
2402 IPAddress ip = IPAddress.Loopback;
2403 IPEndPoint ep = new IPEndPoint (ip, 1254);
2408 sock.Connect (ip, 1254);
2410 Assertion.AssertEquals ("BeginDisconnect #1", true,
2413 sock.Shutdown (SocketShutdown.Both);
2415 BDCalledBack.Reset ();
2416 BDDisconnected = false;
2418 sock.BeginDisconnect (false, BDCallback, sock);
2420 if (BDCalledBack.WaitOne (2000, false) == false) {
2421 Assert.Fail ("BeginDisconnect wait timed out");
2424 Assertion.AssertEquals ("BeginDisconnect #2", true,
2426 Assertion.AssertEquals ("BeginDisconnect #3", false,
2435 public void BeginReceiveSocketError ()
2440 public void BeginReceiveGeneric ()
2445 public void BeginReceiveGenericSocketError ()
2449 private static void BSCallback (IAsyncResult asyncResult)
2451 Socket sock = (Socket)asyncResult.AsyncState;
2453 sock.EndSend (asyncResult);
2458 [Ignore ("System.Net.Sockets.Socket.BeginSend(byte[] ...) is not supported")]
2460 public void BeginSendNotConnected ()
2462 Socket sock = new Socket (AddressFamily.InterNetwork,
2466 byte[] send_bytes = new byte[] {10, 11, 12, 13};
2469 sock.BeginSend (send_bytes, 0,
2471 SocketFlags.None, BSCallback,
2473 Assert.Fail ("BeginSendNotConnected #1");
2474 } catch (SocketException ex) {
2475 Assertion.AssertEquals ("BeginSendNotConnected #2", 10057, ex.ErrorCode);
2477 Assert.Fail ("BeginSendNotConnected #3");
2484 public void BeginSendSocketError ()
2489 public void BeginSendGeneric ()
2494 public void BeginSendGenericSocketError ()
2499 public void BindTwice ()
2501 Socket sock = new Socket (AddressFamily.InterNetwork,
2504 IPEndPoint ep1 = new IPEndPoint (IPAddress.Loopback,
2506 IPEndPoint ep2 = new IPEndPoint (IPAddress.Loopback,
2513 Assert.Fail ("BindTwice #1");
2514 } catch (SocketException ex) {
2515 Assertion.AssertEquals ("BindTwice #2",
2516 10022, ex.ErrorCode);
2518 Assert.Fail ("BindTwice #3");
2526 [Ignore ("System.Net.Sockets.Socket.Close(int) method is not supported")]
2528 public void Close ()
2530 Socket sock = new Socket (AddressFamily.InterNetwork,
2533 Socket listen = new Socket (AddressFamily.InterNetwork,
2536 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2544 Assertion.AssertEquals ("Close #1", true,
2549 Thread.Sleep (3000);
2551 Assertion.AssertEquals ("Close #2", false,
2559 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress,int) is not supported")]
2561 public void ConnectAddressPort ()
2563 Socket sock = new Socket (AddressFamily.InterNetwork,
2566 Socket listen = new Socket (AddressFamily.InterNetwork,
2569 IPAddress ip = IPAddress.Loopback;
2570 IPEndPoint ep = new IPEndPoint (ip, 1249);
2575 sock.Connect (ip, 1249);
2577 Assertion.AssertEquals ("ConnectAddressPort #1",
2578 true, sock.Connected);
2586 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress,int) is not supported")]
2588 public void ConnectAddressPortNull ()
2590 Socket sock = new Socket (AddressFamily.InterNetwork,
2593 IPAddress ip = null;
2596 sock.Connect (ip, 1249);
2597 Assert.Fail ("ConnectAddressPortNull #1");
2598 } catch (ArgumentNullException) {
2600 Assert.Fail ("ConnectAddressPortNull #2");
2608 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress,int) is not supported")]
2610 public void ConnectAddressPortListen ()
2612 Socket sock = new Socket (AddressFamily.InterNetwork,
2615 IPAddress ip = IPAddress.Loopback;
2616 IPEndPoint ep = new IPEndPoint (ip, 1250);
2622 sock.Connect (ip, 1250);
2623 Assert.Fail ("ConnectAddressPortListen #1");
2624 } catch (InvalidOperationException) {
2626 Assert.Fail ("ConnectAddressPortListen #2");
2633 [ExpectedException (typeof(ObjectDisposedException))]
2635 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress,int) is not supported")]
2637 public void ConnectAddressPortClosed ()
2639 Socket sock = new Socket (AddressFamily.InterNetwork,
2642 IPAddress ip = IPAddress.Loopback;
2646 sock.Connect (ip, 1250);
2651 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress[],int) is not supported")]
2653 public void ConnectMultiple ()
2655 Socket sock = new Socket (AddressFamily.InterNetwork,
2658 Socket listen = new Socket (AddressFamily.InterNetwork,
2661 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2663 IPAddress[] ips = new IPAddress[4];
2665 ips[0] = IPAddress.Parse ("127.0.0.4");
2666 ips[1] = IPAddress.Parse ("127.0.0.3");
2667 ips[2] = IPAddress.Parse ("127.0.0.2");
2668 ips[3] = IPAddress.Parse ("127.0.0.1");
2673 sock.Connect (ips, 1251);
2675 Assertion.AssertEquals ("ConnectMultiple #1",
2676 true, sock.Connected);
2677 Assertion.AssertEquals ("ConnectMultiple #2",
2678 AddressFamily.InterNetwork,
2679 sock.RemoteEndPoint.AddressFamily);
2680 IPEndPoint remep = (IPEndPoint)sock.RemoteEndPoint;
2682 Assertion.AssertEquals ("ConnectMultiple #2",
2692 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress[],int) is not supported")]
2694 public void ConnectMultipleNull ()
2696 Socket sock = new Socket (AddressFamily.InterNetwork,
2699 IPAddress[] ips = null;
2702 sock.Connect (ips, 1251);
2703 Assert.Fail ("ConnectMultipleNull #1");
2704 } catch (ArgumentNullException) {
2706 Assert.Fail ("ConnectMultipleNull #2");
2714 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress[],int) is not supported")]
2716 public void ConnectMultipleListen ()
2718 Socket sock = new Socket (AddressFamily.InterNetwork,
2721 IPAddress[] ips = new IPAddress[4];
2722 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback,
2725 ips[0] = IPAddress.Parse ("127.0.0.4");
2726 ips[1] = IPAddress.Parse ("127.0.0.3");
2727 ips[2] = IPAddress.Parse ("127.0.0.2");
2728 ips[3] = IPAddress.Parse ("127.0.0.1");
2734 sock.Connect (ips, 1252);
2735 Assert.Fail ("ConnectMultipleListen #1");
2736 } catch (InvalidOperationException) {
2738 Assert.Fail ("ConnectMultipleListen #2");
2745 [ExpectedException (typeof(ObjectDisposedException))]
2747 [Ignore("System.Net.Sockets.Socket.Connect(IPAddress[],int) is not supported")]
2749 public void ConnectMultipleClosed ()
2751 Socket sock = new Socket (AddressFamily.InterNetwork,
2754 IPAddress[] ips = new IPAddress[4];
2756 ips[0] = IPAddress.Parse ("127.0.0.4");
2757 ips[1] = IPAddress.Parse ("127.0.0.3");
2758 ips[2] = IPAddress.Parse ("127.0.0.2");
2759 ips[3] = IPAddress.Parse ("127.0.0.1");
2763 sock.Connect (ips, 1252);
2768 [Ignore("System.Net.Sockets.Socket.Connect(string,int) is not supported")]
2770 public void ConnectHostPortNull ()
2772 Socket sock = new Socket (AddressFamily.InterNetwork,
2777 sock.Connect ((string)null, 0);
2778 Assert.Fail ("ConnectHostPort #1");
2779 } catch (ArgumentNullException) {
2781 Assert.Fail ("ConnectHostPort #2");
2789 [Ignore("System.Net.Sockets.Socket.Connect(string,int) is not supported")]
2791 public void ConnectHostPortListen ()
2793 Socket sock = new Socket (AddressFamily.InterNetwork,
2796 IPAddress ip = IPAddress.Loopback;
2797 IPEndPoint ep = new IPEndPoint (ip, 1253);
2803 sock.Connect ("localhost", 1253);
2804 Assert.Fail ("ConnectHostPortListen #1");
2805 } catch (InvalidOperationException) {
2807 Assert.Fail ("ConnectHostPortListen #2");
2814 [Category ("NotWorking")] // Need to pick a non-IP AddressFamily that "works" on both mono and ms, this one only works on ms
2815 public void ConnectHostPortNotIP ()
2817 Socket sock = new Socket (AddressFamily.NetBios,
2818 SocketType.Seqpacket,
2819 ProtocolType.Unspecified);
2822 sock.Connect ("localhost", 0);
2823 Assert.Fail ("ConnectHostPortNotIP #1");
2824 } catch (NotSupportedException) {
2826 Assert.Fail ("ConnectHostPortNotIP #2");
2833 [ExpectedException (typeof(ObjectDisposedException))]
2835 [Ignore("System.Net.Sockets.Socket.Connect(string,int) is not supported")]
2837 public void ConnectHostPortClosed ()
2839 Socket sock = new Socket (AddressFamily.InterNetwork,
2845 sock.Connect ("localhost", 0);
2849 [Category ("NotDotNet")] // "Needs XP or later"
2851 [Ignore ("System.Net.Sockets.Socket.Connect(IPAddress,int) is not supported")]
2853 public void Disconnect ()
2856 Socket sock = new Socket (AddressFamily.InterNetwork,
2859 Socket listen = new Socket (AddressFamily.InterNetwork,
2862 IPAddress ip = IPAddress.Loopback;
2863 IPEndPoint ep = new IPEndPoint (ip, 1255);
2868 sock.Connect (ip, 1255);
2870 Assertion.AssertEquals ("Disconnect #1", true,
2873 sock.Shutdown (SocketShutdown.Both);
2875 sock.Disconnect (false);
2877 Assertion.AssertEquals ("BeginDisconnect #3", false,
2886 public void DuplicateAndClose ()
2891 public void IOControl ()
2896 public void ReceiveGeneric ()
2901 public void ReceiveGenericSocketFlags ()
2906 public void ReceiveGenericSocketFlagsSocketError ()
2911 public void SendGeneric ()
2916 public void SendGenericSocketFlags ()
2921 public void SendGenericSocketFlagsSocketError ()
2926 public void ListenNotBound ()
2928 Socket sock = new Socket (AddressFamily.InterNetwork,
2934 Assert.Fail ("ListenNotBound #1");
2935 } catch (SocketException ex) {
2936 Assertion.AssertEquals ("ListenNotBound #2",
2937 10022, ex.ErrorCode);
2939 Assert.Fail ("ListenNotBound #3");