TCP通讯
#region TCP通讯检验连接状态与发送命令
public static bool GetCallBackData(string comMand, out string message)
{
string IP =目标IP;
int port =目标端口;
message = "未连接";
bool flag = false;
try
{
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(IP), port);//IP和端口
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
ConnectSocketDelegate connect = ConnectSocket;
IAsyncResult asyncresult = connect.BeginInvoke(ipep, sock, null, null);
bool connectSuccess = asyncresult.AsyncWaitHandle.WaitOne(Convert.ToInt32(TimeOut), false);
if (!connectSuccess)
{
message = "连接超时。";
flag = false;
}
else
{
TcpClient tcpClient = new TcpClient();
tcpClient.Connect(IPAddress.Parse(IP), port);
if (tcpClient.Connected)
{
using (var ntwStream = tcpClient.GetStream())
{
if (ntwStream.CanWrite)
{
Byte[] bytSend = Encoding.UTF8.GetBytes(comMand);
var newByteSend = bytSend.ToList();
//newByteSend.Add(0x0d);//这里增加分隔符
bytSend = newByteSend.ToArray();
ntwStream.Write(bytSend, 0, bytSend.Length);
//var buffer = new byte[1024];
//var count = ntwStream.Read(buffer, 0, 1024);
//message = Encoding.UTF8.GetString(buffer, 0, count);
//message = message.Replace("\r", "");
public static bool GetCallBackData(string comMand, out string message)
{
string IP =目标IP;
int port =目标端口;
message = "未连接";
bool flag = false;
try
{
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(IP), port);//IP和端口
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
ConnectSocketDelegate connect = ConnectSocket;
IAsyncResult asyncresult = connect.BeginInvoke(ipep, sock, null, null);
bool connectSuccess = asyncresult.AsyncWaitHandle.WaitOne(Convert.ToInt32(TimeOut), false);
if (!connectSuccess)
{
message = "连接超时。";
flag = false;
}
else
{
TcpClient tcpClient = new TcpClient();
tcpClient.Connect(IPAddress.Parse(IP), port);
if (tcpClient.Connected)
{
using (var ntwStream = tcpClient.GetStream())
{
if (ntwStream.CanWrite)
{
Byte[] bytSend = Encoding.UTF8.GetBytes(comMand);
var newByteSend = bytSend.ToList();
//newByteSend.Add(0x0d);//这里增加分隔符
bytSend = newByteSend.ToArray();
ntwStream.Write(bytSend, 0, bytSend.Length);
//var buffer = new byte[1024];
//var count = ntwStream.Read(buffer, 0, 1024);
//message = Encoding.UTF8.GetString(buffer, 0, count);
//message = message.Replace("\r", "");
flag = true;
}
else
{
message = "无法写入数据流";
ntwStream.Close();
flag = false;
}
}
tcpClient.Close();
}
}
}
catch
{
message = "连接出现异常";
}
return flag;
}
}
else
{
message = "无法写入数据流";
ntwStream.Close();
flag = false;
}
}
tcpClient.Close();
}
}
}
catch
{
message = "连接出现异常";
}
return flag;
}
private delegate string ConnectSocketDelegate(IPEndPoint ipep, Socket sock);
private static string ConnectSocket(IPEndPoint ipep, Socket sock)
{
string exmessage = "";
try
{
sock.Connect(ipep);
}
catch (System.Exception ex)
{
exmessage = ex.Message;
}
finally
{
}
private static string ConnectSocket(IPEndPoint ipep, Socket sock)
{
string exmessage = "";
try
{
sock.Connect(ipep);
}
catch (System.Exception ex)
{
exmessage = ex.Message;
}
finally
{
}
return exmessage;
}
}
#endregion