New test.
[mono.git] / mcs / class / System / Test / System.Net.Sockets / TcpClientTest.cs
1 // System.Net.Sockets.TcpClientTest.cs\r
2 //\r
3 // Authors:\r
4 //    Phillip Pearson (pp@myelin.co.nz)\r
5 //    Martin Willemoes Hansen (mwh@sysrq.dk)\r
6 //\r
7 // (C) Copyright 2001 Phillip Pearson (http://www.myelin.co.nz)\r
8 // (C) Copyright 2003 Martin Willemoes Hansen\r
9 //\r
10 \r
11 using System;\r
12 using System.Net;\r
13 using System.Net.Sockets;\r
14 using NUnit.Framework;\r
15 \r
16 namespace MonoTests.System.Net.Sockets {\r
17 \r
18         /// <summary>\r
19         /// Tests System.Net.Sockets.TcpClient\r
20         /// </summary>\r
21         [TestFixture]\r
22         public class TcpClientTest {\r
23                 \r
24                 /// <summary>\r
25                 /// Tests the TcpClient object\r
26                 /// (from System.Net.Sockets)\r
27                 /// </summary>\r
28                 [Test]\r
29                 public void TcpClient()\r
30                 {\r
31                         // set up a listening Socket\r
32                         Socket lSock = new Socket(AddressFamily.InterNetwork,\r
33                                 SocketType.Stream, ProtocolType.Tcp);\r
34                         \r
35                         lSock.Bind(new IPEndPoint(IPAddress.Any, 8765));\r
36                         lSock.Listen(-1);\r
37 \r
38 \r
39                         // connect to it with a TcpClient\r
40                         TcpClient outClient = new TcpClient("localhost", 8765);\r
41                         Socket inSock = lSock.Accept();\r
42 \r
43                         \r
44                         // now try exchanging data\r
45                         NetworkStream stream = outClient.GetStream();\r
46 \r
47                         const int len = 1024;\r
48                         byte[] outBuf = new Byte[len];\r
49                         for (int i=0; i<len; i++) \r
50                         {\r
51                                 outBuf[i] = (byte)(i % 256);\r
52                         }\r
53 \r
54                         // send it\r
55                         stream.Write(outBuf,0,len);\r
56 \r
57                         // and see if it comes back\r
58                         byte[] inBuf = new Byte[len];\r
59                         int ret = inSock.Receive(inBuf, 0, len, 0);\r
60                         Assertion.Assert(ret != 0);\r
61 \r
62                         for (int i=0; i<len; i++) \r
63                         {\r
64                                 Assertion.Assert(inBuf[i] == outBuf[i]);\r
65                         }\r
66                         \r
67 \r
68                         // tidy up\r
69                         inSock.Close();\r
70                         outClient.Close();\r
71                         lSock.Close();\r
72                         \r
73                 }       \r
74                 \r
75         }\r
76 \r
77 }\r