using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; namespace JJMediSys { public class SocketClient { private Socket _clientSocket; private IPEndPoint _serverEndPoint; public bool Status = false; public SocketClient(string serverIp, int serverPort) { _serverEndPoint = new IPEndPoint(IPAddress.Parse(serverIp), serverPort); } public bool Connect() { _clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { _clientSocket.Connect(_serverEndPoint); Status = true; SystemSet.logger.Info("Connected to server"); return Status; } catch (SocketException ex) { Status = false; SystemSet.logger.Info($"Connection failed: {ex.Message}"); return Status; } } public bool SendData(string data) { if (_clientSocket == null || !_clientSocket.Connected) { SystemSet.logger.Info("Not connected to server"); Status = false; return false; } byte[] buffer = Encoding.UTF8.GetBytes(data); try { _clientSocket.Send(buffer); SystemSet.logger.Info($"Sent data: {data}"); return true; } catch (SocketException ex) { SystemSet.logger.Info($"Send failed: {ex.Message}"); return false; } } public string ReceiveData() { if (_clientSocket == null || !_clientSocket.Connected) { SystemSet.logger.Info("Not connected to server"); Status = false; return null; } byte[] buffer = new byte[1024]; try { int bytesReceived = _clientSocket.Receive(buffer); string receivedData = Encoding.UTF8.GetString(buffer, 0, bytesReceived); SystemSet.logger.Info($"Received data: {receivedData}"); return receivedData; } catch (SocketException ex) { SystemSet.logger.Info($"Receive failed: {ex.Message}"); return null; } } public void Disconnect() { if (_clientSocket != null) { _clientSocket.Shutdown(SocketShutdown.Both); _clientSocket.Close(); _clientSocket = null; SystemSet.logger.Info("Disconnected from server"); Status = false; } } } }