Mercurial > hg > Database > Christie-sharp
annotate Test/RewritingTest/TCPListenerTest.cs @ 33:7575980bffc9
update
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 20 Apr 2021 18:42:17 +0900 |
parents | Test/RewritingTest/TCPListener.cs@3a7a71ee8738 |
children |
rev | line source |
---|---|
32
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 using System; |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 using System.Net; |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 using System.Net.Sockets; |
33 | 4 using System.Threading; |
5 using System.Threading.Tasks; | |
32
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 |
33 | 7 public class TCPListenerTest { |
32
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 public static void Main() { |
33 | 10 TCPListenerTest listenerTest = new TCPListenerTest(); |
11 | |
12 TcpListener listener = new TcpListener(IPAddress.IPv6Any, 11000); | |
13 listener.Server.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, 0); | |
14 | |
15 // 開始 | |
16 listener.Start(); | |
17 | |
18 Thread thread = new Thread ( () => listenerTest.TCPListenerFunc(listener)); | |
19 thread.Name = "test"; | |
20 thread.Start(); | |
21 } | |
32
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 |
33 | 23 void SocketInTask(TCPListenerTest listenerTest) { |
24 // Thread thread = new Thread (listenerTest.TCPListenerFunc); | |
25 // thread.Start(); | |
26 } | |
27 | |
28 | |
29 public void TCPListenerFunc(TcpListener server) { | |
30 //TcpListener server = null; | |
31 try { | |
32 // IPAddress localAddress = IPAddress.Parse("127.0.0.1"); | |
33 // | |
34 // server = new TcpListener(IPAddress.IPv6Any, 11000); | |
35 // // ipv4/v6対応 | |
36 // server.Server.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, 0); | |
37 // | |
38 // // 開始 | |
39 // server.Start(); | |
32
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 string data = null; |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 Byte[] bytes = new byte[256]; |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44 while (true) { |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 Console.Write("Waiting for a connection... "); |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46 |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 TcpClient client = server.AcceptTcpClient(); |
33 | 48 client.NoDelay = true; |
32
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
49 |
33 | 50 IPEndPoint endPoint = (IPEndPoint) client.Client.RemoteEndPoint; |
51 IPAddress ipAddress = endPoint.Address; | |
52 IPHostEntry hostEntry = Dns.GetHostEntry(ipAddress); | |
53 Console.WriteLine("host:" + hostEntry.HostName + " port:" + endPoint.Port); | |
54 | |
32
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
55 data = null; |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56 |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
57 NetworkStream stream = client.GetStream(); |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
59 int i; |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
60 |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
61 // Loop to receive all the data sent by the client. |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
62 while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) { |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
63 // Translate data bytes to a ASCII string. |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
64 data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
65 Console.WriteLine("Received: {0}", data); |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
66 |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
67 // Process the data sent by the client. |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
68 data = data.ToUpper(); |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
69 |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
70 byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
71 |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
72 // Send back a response. |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
73 stream.Write(msg, 0, msg.Length); |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
74 Console.WriteLine("Sent: {0}", data); |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
75 } |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
76 |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
77 // Shutdown and end connection |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
78 client.Close(); |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
79 } |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
80 } catch (SocketException e) { |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
81 Console.WriteLine("SocketException: {0}", e); |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
82 } finally { |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
83 server.Stop(); |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
84 } |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
85 } |
3a7a71ee8738
Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
86 } |