Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Net.Sockets;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using WebSocketSharp;
- namespace Ob_Volume.Broker.Network {
- public class SocketClient {
- private Socket ClientSocket { get; set; }
- private CancellationTokenSource TokenSource { get; set; }
- public static event EventHandler<MessageEventArgs> MessageReceived;
- public SocketClient() {
- ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- TokenSource = new CancellationTokenSource();
- ConnectSocket();
- }
- public void ConnectSocket() {
- var Token = TokenSource.Token;
- Task.Run(() => {
- Reconnect:
- try {
- ClientSocket.Connect("127.0.0.1", 100);
- SendMessage("Join:Ob Volume");
- SendMessage("SendHistoric");
- while (!Token.IsCancellationRequested) {
- byte[] buffer = new byte[5000000];
- int bytesRecebidos = ClientSocket.Receive(buffer);
- string resposta = Encoding.ASCII.GetString(buffer, 0, bytesRecebidos);
- if (resposta == ""){
- Debug.WriteLine("Disconnected from socket server.");
- ClientSocket.Close();
- break;
- }
- OnMessageReceived(new MessageEventArgs { Message = resposta });
- }
- }
- catch (SocketException ex) {
- if (ex.SocketErrorCode == SocketError.ConnectionRefused) {
- Thread.Sleep(5000);
- goto Reconnect;
- }
- }
- }, Token);
- }
- public void SendMessage(string message){
- ClientSocket.Send(Encoding.ASCII.GetBytes(message));
- }
- protected virtual void OnMessageReceived(MessageEventArgs e) {
- MessageReceived?.Invoke(this, e);
- }
- }
- public class MessageEventArgs {
- public string Message { get; set; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment