Files
tj-tzhg/JJMediSys/cs/SocketClient.cs

102 lines
2.9 KiB
C#
Raw Normal View History

2025-11-26 17:20:53 +08:00
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;
}
}
}
}