SCLS/SSWCS_JXDL(2019)/SocketsTCPIP/CClientTCPIP0.cs
2025-05-19 09:45:29 +08:00

132 lines
4.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using CommonClassLib;
namespace SocketsTCPIP
{
public static class CClientTCPIP
{
static int _initCount=0;
static bool _ifInit = false;
static string _remoteIP;
static int _remotePort;
static Socket clientSocket;
static EndPoint epServer;
static byte[] _byteData = new byte[16];
static string _tcpError;
public static string TcpError
{
get { return _tcpError; }
set { _tcpError = value; }
}
public static byte[] ByteData
{
get { return _byteData; }
set { _byteData = value; }
}
public static bool InitClientTCPIP()
{
if (_initCount > 3)
{
_tcpError = "连接远程主机时,发生三次连接失败错误!请检查远程主机是否正常运行!重新启动本系统。";
return false;
}
try
{
//Using TCPIP sockets
clientSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
//IP address of the server machine
IPAddress ipAddress = IPAddress.Parse(_remoteIP);
//Server is listening on port 1000
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, _remotePort);
epServer = (EndPoint)ipEndPoint;
//Login to the server
clientSocket.Connect(epServer);
_ifInit = true;
return true;
}
catch (Exception ex)
{
if(_initCount>3)
{
_tcpError = "连接远程主机时,发生三次连接失败错误!请检查远程主机是否正常运行!重新启动本系统。";
return false;
}
_initCount++;
_ifInit = false;
_tcpError = ex.Message;
return false;
}
}
public static byte[] ConnectTCPIP(byte[] byteData, string remoteip, int remoteport)
{
try
{
_remoteIP = remoteip;
_remotePort = remoteport;
if (_ifInit == false)
{
if (InitClientTCPIP() == false)
{
return null;
}
}
clientSocket.Send(byteData);
CCarryConvert.WriteDarkCasket("CClientTCPIP", "Send", remoteip + ":" + remoteport, byteData);
clientSocket.Receive(_byteData);
CCarryConvert.WriteDarkCasket("CClientTCPIP", "Receive", remoteip + ":" + remoteport, _byteData);
return _byteData;
}
catch (Exception ex)
{
_tcpError= ex.Message ;
return null;
}
}
public static byte[] ConnectTCPIP(string strData, string remoteip, int remoteport)
{
try
{
_remoteIP = remoteip;
_remotePort = remoteport;
if (_ifInit == false)
{
if (InitClientTCPIP() == false)
{
return null;
}
}
byte[] byteData;
byteData = Encoding.UTF8.GetBytes(strData);
clientSocket.Send(byteData);
CCarryConvert.WriteDarkCasket("CClientTCPIP", "Send", remoteip + ":" + remoteport, byteData);
clientSocket.Receive(_byteData);
CCarryConvert.WriteDarkCasket("CClientTCPIP", "Receive", remoteip + ":" + remoteport, _byteData);
return _byteData;
}
catch (Exception ex)
{
_tcpError= ex.Message ;
return null;
}
}
public static void CloseSockets()
{
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
}
}
}