Guest User

Untitled

a guest
Jul 19th, 2023
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Net.Sockets;
  5. using System.Text;
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8. using System.Windows.Forms;
  9. using WebSocketSharp;
  10.  
  11. namespace Ob_Volume.Broker.Network {
  12. public class SocketClient {
  13. private Socket ClientSocket { get; set; }
  14. private CancellationTokenSource TokenSource { get; set; }
  15. public static event EventHandler<MessageEventArgs> MessageReceived;
  16.  
  17. public SocketClient() {
  18. ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  19. TokenSource = new CancellationTokenSource();
  20.  
  21. ConnectSocket();
  22. }
  23.  
  24. public void ConnectSocket() {
  25. var Token = TokenSource.Token;
  26.  
  27. Task.Run(() => {
  28.  
  29. Reconnect:
  30. try {
  31. ClientSocket.Connect("127.0.0.1", 100);
  32.  
  33. SendMessage("Join:Ob Volume");
  34. SendMessage("SendHistoric");
  35.  
  36. while (!Token.IsCancellationRequested) {
  37. byte[] buffer = new byte[5000000];
  38. int bytesRecebidos = ClientSocket.Receive(buffer);
  39. string resposta = Encoding.ASCII.GetString(buffer, 0, bytesRecebidos);
  40. if (resposta == ""){
  41. Debug.WriteLine("Disconnected from socket server.");
  42. ClientSocket.Close();
  43. break;
  44. }
  45. OnMessageReceived(new MessageEventArgs { Message = resposta });
  46. }
  47. }
  48. catch (SocketException ex) {
  49. if (ex.SocketErrorCode == SocketError.ConnectionRefused) {
  50.  
  51. Thread.Sleep(5000);
  52. goto Reconnect;
  53. }
  54. }
  55. }, Token);
  56. }
  57.  
  58. public void SendMessage(string message){
  59. ClientSocket.Send(Encoding.ASCII.GetBytes(message));
  60. }
  61.  
  62. protected virtual void OnMessageReceived(MessageEventArgs e) {
  63. MessageReceived?.Invoke(this, e);
  64. }
  65. }
  66.  
  67. public class MessageEventArgs {
  68. public string Message { get; set; }
  69. }
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment