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);
33 using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) {
38 } catch (SocketException ex) {
39 Assert.AreEqual (10049, ex.ErrorCode, "#2");
43 using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) {
48 } catch (SocketException ex) {
49 Assert.AreEqual (10049, ex.ErrorCode, "#4");
54 [Ignore ("Bug #75158")]
55 public void IncompatibleAddress ()
57 IPEndPoint epIPv6 = new IPEndPoint (IPAddress.IPv6Any,
61 using (Socket s = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP)) {
66 } catch (SocketException ex) {
69 int expectedError = 10022;
71 // address incompatible with protocol
72 int expectedError = 10047;
74 Assert.AreEqual (expectedError, ex.ErrorCode,
80 [Category ("InetAccess")]
81 public void EndConnect ()
83 IPAddress ipOne = IPAddress.Parse (BogusAddress);
84 IPEndPoint ipEP = new IPEndPoint (ipOne, BogusPort);
85 Socket sock = new Socket (ipEP.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
86 IAsyncResult ar = sock.BeginConnect (ipEP, null, null);
87 bool gotException = false;
90 sock.EndConnect (ar); // should raise an exception because connect was bogus
95 Assertion.AssertEquals ("A01", gotException, true);
99 [ExpectedException (typeof (ArgumentNullException))]
100 public void SelectEmpty ()
102 ArrayList list = new ArrayList ();
103 Socket.Select (list, list, list, 1000);
106 private bool BlockingConnect (bool block)
108 IPEndPoint ep = new IPEndPoint(IPAddress.Loopback, 1234);
109 Socket server = new Socket(AddressFamily.InterNetwork,
113 server.Blocking=block;
117 Socket conn = new Socket (AddressFamily.InterNetwork,
122 Socket client = server.Accept();
123 bool client_block = client.Blocking;
129 return(client_block);
133 public void AcceptBlockingStatus()
137 block = BlockingConnect(true);
138 Assertion.AssertEquals ("BlockingStatus01",
141 block = BlockingConnect(false);
142 Assertion.AssertEquals ("BlockingStatus02",
148 [ExpectedException (typeof (ArgumentException))]
150 public void SetSocketOptionBoolean ()
152 IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 1);
153 Socket sock = new Socket (ep.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
155 sock.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
162 public void TestSelect1 ()
164 Socket srv = CreateServer ();
165 ClientSocket clnt = new ClientSocket (srv.LocalEndPoint);
166 Thread th = new Thread (new ThreadStart (clnt.ConnectSleepClose));
172 ArrayList list = new ArrayList ();
173 ArrayList empty = new ArrayList ();
175 Socket.Select (list, empty, empty, 100);
176 Assertion.AssertEquals ("#01", 0, empty.Count);
177 Assertion.AssertEquals ("#02", 1, list.Count);
178 Socket.Select (empty, list, empty, 100);
179 Assertion.AssertEquals ("#03", 0, empty.Count);
180 Assertion.AssertEquals ("#04", 1, list.Count);
181 Socket.Select (list, empty, empty, -1);
182 Assertion.AssertEquals ("#05", 0, empty.Count);
183 Assertion.AssertEquals ("#06", 1, list.Count);
191 static Socket CreateServer ()
193 Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
194 sock.Bind (new IPEndPoint (IPAddress.Loopback, 0));
203 public ClientSocket (EndPoint ep)
206 sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
209 public void ConnectSleepClose ()
218 byte [] b = new byte [10];
223 byte[] buf = new byte[100];
226 [ExpectedException (typeof (ObjectDisposedException))]
227 public void Disposed1 ()
229 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
230 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
233 s.ReceiveFrom (buf, ref ep);
237 [ExpectedException (typeof (ObjectDisposedException))]
238 public void Disposed2 ()
240 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
247 [ExpectedException (typeof (ObjectDisposedException))]
248 public void Disposed3 ()
250 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
253 s.GetSocketOption (0, 0);
257 [ExpectedException (typeof (ObjectDisposedException))]
258 public void Disposed4 ()
260 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
263 s.GetSocketOption (0, 0, null);
267 [ExpectedException (typeof (ObjectDisposedException))]
268 public void Disposed5 ()
270 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
273 s.GetSocketOption (0, 0, 0);
277 [ExpectedException (typeof (ObjectDisposedException))]
278 public void Disposed6 ()
280 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
287 [ExpectedException (typeof (ObjectDisposedException))]
288 public void Disposed7 ()
290 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
297 [ExpectedException (typeof (ObjectDisposedException))]
298 public void Disposed8 ()
300 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
307 [ExpectedException (typeof (ObjectDisposedException))]
308 public void Disposed9 ()
310 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
317 [ExpectedException (typeof (ObjectDisposedException))]
318 public void Disposed10 ()
320 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
323 s.Receive (buf, 10, 0);
327 [ExpectedException (typeof (ObjectDisposedException))]
328 public void Disposed11 ()
330 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
331 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
334 s.Receive (buf, 0, 10, 0);
338 [ExpectedException (typeof (ObjectDisposedException))]
339 public void Disposed12 ()
341 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
342 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
345 s.ReceiveFrom (buf, 0, ref ep);
349 [ExpectedException (typeof (ObjectDisposedException))]
350 public void Disposed13 ()
352 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
353 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
356 s.ReceiveFrom (buf, 10, 0, ref ep);
360 [ExpectedException (typeof (ObjectDisposedException))]
361 public void Disposed14 ()
363 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
364 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
367 s.ReceiveFrom (buf, 0, 10, 0, ref ep);
371 [ExpectedException (typeof (ObjectDisposedException))]
372 public void Disposed15 ()
374 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
381 [ExpectedException (typeof (ObjectDisposedException))]
382 public void Disposed16 ()
384 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
391 [ExpectedException (typeof (ObjectDisposedException))]
392 public void Disposed17 ()
394 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
401 [ExpectedException (typeof (ObjectDisposedException))]
402 public void Disposed18 ()
404 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
405 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
408 s.Send (buf, 0, 10, 0);
412 [ExpectedException (typeof (ObjectDisposedException))]
413 public void Disposed19 ()
415 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
416 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
419 s.SendTo (buf, 0, ep);
423 [ExpectedException (typeof (ObjectDisposedException))]
424 public void Disposed20 ()
426 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
427 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
430 s.SendTo (buf, 10, 0, ep);
434 [ExpectedException (typeof (ObjectDisposedException))]
435 public void Disposed21 ()
437 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
438 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
441 s.SendTo (buf, 0, 10, 0, ep);
445 [ExpectedException (typeof (ObjectDisposedException))]
446 public void Disposed22 ()
448 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
449 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);
456 [ExpectedException (typeof (ObjectDisposedException))]
457 public void Disposed23 ()
459 Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
460 EndPoint ep = new IPEndPoint (IPAddress.Any, 31337);