132 lines
4.1 KiB
C#
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();
|
|
}
|
|
|
|
|
|
}
|
|
}
|