电子药箱通讯服务端
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

Program.cs 2.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System;
  2. using System.Text;
  3. using System.Threading;
  4. using TouchSocket.Core.Config;
  5. using TouchSocket.Core.Plugins;
  6. using TouchSocket.Sockets;
  7. namespace Tcp.Test
  8. {
  9. internal class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
  14. var encoding = Encoding.GetEncoding("gb2312");
  15. var tcpClient = new TcpClient();
  16. tcpClient.Connected += (client, e) => { Console.WriteLine("成功连接服务器"); };//成功连接到服务器
  17. tcpClient.Disconnected += (client, e) => { Console.WriteLine("与服务器断开连接"); };//从服务器断开连接,当连接不成功时不会触发。
  18. tcpClient.Received += (client, byteBlock, requestInfo) =>
  19. {
  20. //从服务器收到信息
  21. string mes = encoding.GetString(byteBlock.Buffer, 0, byteBlock.Len);
  22. Console.WriteLine($"接收到信息:{mes}");
  23. };
  24. //声明配置
  25. var config = new TouchSocketConfig();
  26. config.SetRemoteIPHost(new IPHost("127.0.0.1:8308"))
  27. .UsePlugin()
  28. .ConfigurePlugins(a =>
  29. {
  30. a.UseReconnection(5, true, 1000);
  31. })
  32. .SetBufferLength(1024 * 10);
  33. //载入配置
  34. tcpClient.Setup(config);
  35. Connection:
  36. ConnectServer(tcpClient);
  37. try
  38. {
  39. while (true)
  40. {
  41. var res = Console.ReadLine();
  42. if (!string.IsNullOrWhiteSpace(res))
  43. {
  44. var bytes = encoding.GetBytes(res);
  45. tcpClient.Send(bytes);
  46. }
  47. }
  48. }
  49. catch (Exception ex)
  50. {
  51. Console.WriteLine("发生异常:" + ex.Message);
  52. goto Connection;
  53. }
  54. }
  55. private static void ConnectServer(TcpClient client)
  56. {
  57. while (true)
  58. {
  59. Console.WriteLine("正在连接服务器...");
  60. try
  61. {
  62. client.Connect();
  63. Console.WriteLine("连接成功");
  64. break;
  65. }
  66. catch (Exception ex)
  67. {
  68. Console.WriteLine("连接失败:" + ex.Message);
  69. Thread.Sleep(1000);
  70. }
  71. }
  72. }
  73. }
  74. }