Advertisement
Guest User

Untitled

a guest
Jan 16th, 2019
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.38 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Net.Sockets;
  6. using System.Text;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9.  
  10. namespace IP_lab1
  11. {
  12. class Program
  13. {
  14.  
  15. static object Lock = new object();
  16.  
  17. static void Main(string[] args)
  18. {
  19.  
  20.  
  21.  
  22. Task task = serverTask();
  23. Task c1 = clientTask("100",10, 100);
  24. Task c2 = clientTask("2",5, 2000);
  25.  
  26. Task.WaitAll(new Task[] { task, c1, c2 });
  27.  
  28.  
  29.  
  30.  
  31. }
  32.  
  33.  
  34. static async Task serverTask()
  35. {
  36.  
  37. TcpListener server = new TcpListener(IPAddress.Any, 2048);
  38.  
  39. server.Start();
  40.  
  41. while (true)
  42. {
  43.  
  44. TcpClient client = await server.AcceptTcpClientAsync();
  45.  
  46. byte[] buffer = new byte[1024];
  47.  
  48. await client.GetStream().ReadAsync(buffer, 0, buffer.Length).ContinueWith(
  49. async (t) =>
  50. {
  51. int i = t.Result;
  52. while (true)
  53. {
  54. await client.GetStream().WriteAsync(buffer, 0, i);
  55. i = await client.GetStream().ReadAsync(buffer, 0, buffer.Length);
  56. Console.WriteLine("Server:" + System.Text.Encoding.Default.GetString(buffer).Substring(0, i));
  57. }
  58. });
  59. }
  60. }
  61. static async Task clientTask(string msg, int n, int t)
  62. {
  63.  
  64.  
  65.  
  66. TcpClient client = new TcpClient();
  67. await client.ConnectAsync("localhost", 2048);
  68.  
  69. byte[] msg_buffer = ASCIIEncoding.ASCII.GetBytes(msg);
  70. for (int i = 0; i < n; i++)
  71. {
  72. Thread.Sleep(t);
  73. await client.GetStream().WriteAsync(msg_buffer, 0, msg.Length).ContinueWith(
  74. async (tsk) =>
  75. {
  76. byte[] buffer = new byte[1024];
  77. int lnt = await client.GetStream().ReadAsync(buffer, 0, 1024);
  78. Console.WriteLine("Client:" + Encoding.Default.GetString(buffer).Substring(0, lnt));
  79. });
  80. }
  81.  
  82. }
  83. static void server(Object stateInfo)
  84. {
  85. TcpListener server = new TcpListener(IPAddress.Any, 2048);
  86. server.Start();
  87.  
  88. while (true)
  89. {
  90. TcpClient client = server.AcceptTcpClient();
  91. ThreadPool.QueueUserWorkItem(ThreadProc, client);
  92.  
  93. }
  94.  
  95. }
  96.  
  97. static void ThreadProc(Object stateInfo)
  98. {
  99. TcpClient client = (TcpClient)stateInfo;
  100.  
  101. while (true)
  102. {
  103. byte[] buffer = new byte[1024];
  104. int l = client.GetStream().Read(buffer, 0, 1024);
  105. client.GetStream().Write(buffer, 0, l);
  106. string serv = "Server: " + System.Text.Encoding.Default.GetString(buffer).Substring(0, l);
  107. writrConsoleMessage(serv, ConsoleColor.Green);
  108. }
  109.  
  110. }
  111.  
  112.  
  113. static void ClientSim(object stateInfo)
  114. {
  115. object[] args = stateInfo as object[];
  116. string message = args[0] as string;
  117. int n = (int)args[1];
  118. int t = (int)args[2];
  119. TcpClient client = new TcpClient();
  120. client.Connect(IPAddress.Parse("127.0.0.1"), 2048);
  121. byte[] message_rcv;// = new byte[1024];
  122. for (int i = 0; i < n; i++)
  123. {
  124. byte[] message_bts = new ASCIIEncoding().GetBytes(message);
  125. client.GetStream().Write(message_bts, 0, message.Length);
  126. message_rcv = new byte[1024];
  127. int l = client.GetStream().Read(message_rcv, 0, 1024);
  128. string clie = "Client: " + System.Text.Encoding.Default.GetString(message_rcv).Substring(0, l);
  129. writrConsoleMessage(clie, ConsoleColor.Red);
  130. Thread.Sleep(t);
  131. }
  132. }
  133.  
  134. static void writrConsoleMessage(string message, ConsoleColor color)
  135. {
  136. lock (Lock)
  137. {
  138. Console.ForegroundColor = color;
  139. Console.WriteLine(message);
  140. Console.ResetColor();
  141. }
  142. }
  143.  
  144. }
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement