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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
4 using System.Threading;
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
5 using System.Threading.Tasks;
32
3a7a71ee8738 Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
33
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
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
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
10 TCPListenerTest listenerTest = new TCPListenerTest();
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
11
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
12 TcpListener listener = new TcpListener(IPAddress.IPv6Any, 11000);
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
13 listener.Server.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, 0);
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
14
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
15 // 開始
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
16 listener.Start();
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
17
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
18 Thread thread = new Thread ( () => listenerTest.TCPListenerFunc(listener));
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
19 thread.Name = "test";
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
20 thread.Start();
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
21 }
32
3a7a71ee8738 Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
33
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
23 void SocketInTask(TCPListenerTest listenerTest) {
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
24 // Thread thread = new Thread (listenerTest.TCPListenerFunc);
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
25 // thread.Start();
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
26 }
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
27
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
28
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
29 public void TCPListenerFunc(TcpListener server) {
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
30 //TcpListener server = null;
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
31 try {
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
32 // IPAddress localAddress = IPAddress.Parse("127.0.0.1");
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
33 //
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
34 // server = new TcpListener(IPAddress.IPv6Any, 11000);
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
35 // // ipv4/v6対応
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
36 // server.Server.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, 0);
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
37 //
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
38 // // 開始
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
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
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
48 client.NoDelay = true;
32
3a7a71ee8738 Add TCPListener & Client test
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
33
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
50 IPEndPoint endPoint = (IPEndPoint) client.Client.RemoteEndPoint;
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
51 IPAddress ipAddress = endPoint.Address;
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
52 IPHostEntry hostEntry = Dns.GetHostEntry(ipAddress);
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
53 Console.WriteLine("host:" + hostEntry.HostName + " port:" + endPoint.Port);
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 32
diff changeset
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 }