Program.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using System.Net;
  3. using System.Net.Sockets;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. class TcpServer
  7. {
  8. static void Main(string[] args)
  9. {
  10. try
  11. {
  12. int listenPort = 8234;
  13. IPAddress localAddr = IPAddress.Parse("192.168.10.106");
  14. //int listenPort = 8234;
  15. //IPAddress localAddr = IPAddress.Parse("10.1.162.119");
  16. TcpListener server = new TcpListener(localAddr, listenPort);
  17. server.Start();
  18. Console.WriteLine(DateTime.Now.ToString()+"Server started...");
  19. while (true)
  20. {
  21. TcpClient client = server.AcceptTcpClient();
  22. Console.WriteLine(DateTime.Now.ToString() + "Connected!");
  23. Task.Run(() => HandleClientAsync(client));
  24. }
  25. }catch (Exception ex)
  26. {
  27. Console.WriteLine(DateTime.Now.ToString() + ex.Message);
  28. Console.ReadKey();
  29. }
  30. }
  31. static async Task HandleClientAsync(TcpClient client)
  32. {
  33. NetworkStream stream = client.GetStream();
  34. byte[] buffer = new byte[1024000000];
  35. int bytesRead;
  36. try
  37. {
  38. while ((bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length)) > 0)
  39. {
  40. string receivedData = Encoding.ASCII.GetString(buffer, 0, bytesRead);
  41. Console.WriteLine(DateTime.Now.ToString() + $"Received: {receivedData}");
  42. // Forward the data to another server
  43. await ForwardDataAsync(receivedData, "192.168.5.100", 8899);
  44. //await ForwardDataAsync(receivedData, "10.1.162.119", 8899);
  45. }
  46. }
  47. catch (Exception ex)
  48. {
  49. Console.WriteLine(DateTime.Now.ToString() + $"Error: {ex.Message}");
  50. }
  51. client.Close();
  52. }
  53. static async Task ForwardDataAsync(string data, string ip, int port)
  54. {
  55. using (TcpClient forwardClient = new TcpClient(ip, port))
  56. {
  57. NetworkStream forwardStream = forwardClient.GetStream();
  58. byte[] dataToSend = Encoding.ASCII.GetBytes(data);
  59. await forwardStream.WriteAsync(dataToSend, 0, dataToSend.Length);
  60. Console.WriteLine(DateTime.Now.ToString() + $"Data forwarded to {ip}:{port}");
  61. }
  62. }
  63. }