102 lines
2.9 KiB
C#
102 lines
2.9 KiB
C#
|
|
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;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|