2 using System
.Threading
;
4 using System
.Net
.Sockets
;
7 namespace MonoTests
.System
.Net
.Sockets
10 public class SocketAcceptAsyncTest
13 #if FEATURE_NO_BSD_SOCKETS
14 [ExpectedException (typeof (PlatformNotSupportedException
))]
16 public void AcceptAsyncShouldUseAcceptSocketFromEventArgs()
18 var readyEvent
= new ManualResetEvent(false);
19 var mainEvent
= new ManualResetEvent(false);
20 var listenSocket
= new Socket(
21 AddressFamily
.InterNetwork
, SocketType
.Stream
, ProtocolType
.Tcp
);
22 var serverSocket
= new Socket(
23 AddressFamily
.InterNetwork
, SocketType
.Stream
, ProtocolType
.Tcp
);
24 Socket acceptedSocket
= null;
26 ThreadPool
.QueueUserWorkItem(_
=>
28 SocketAsyncEventArgs asyncEventArgs
;
30 listenSocket
.Bind(new IPEndPoint(IPAddress
.Loopback
, 0));
31 listenSocket
.Listen(1);
33 asyncEventArgs
= new SocketAsyncEventArgs {AcceptSocket = serverSocket}
;
34 asyncEventArgs
.Completed
+= (s
, e
) =>
36 acceptedSocket
= e
.AcceptSocket
;
40 } catch (Exception e
) {
48 if (listenSocket
.AcceptAsync(asyncEventArgs
))
50 acceptedSocket
= asyncEventArgs
.AcceptSocket
;
52 } catch (Exception e
) {
56 Assert
.IsTrue(readyEvent
.WaitOne(1500));
60 var clientSocket
= new Socket(
61 AddressFamily
.InterNetwork
, SocketType
.Stream
, ProtocolType
.Tcp
);
62 clientSocket
.Connect(listenSocket
.LocalEndPoint
);
63 clientSocket
.NoDelay
= true;
65 Assert
.IsTrue(mainEvent
.WaitOne(1500));
66 Assert
.AreEqual(serverSocket
, acceptedSocket
, "x");
69 if (acceptedSocket
!= null)
70 acceptedSocket
.Close();