自己的封装的telnet通信类:
using System;
using System.Collections.Generic;using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.Net;
namespace FoaAuto
{
public delegate void RecvMsgHandle(string msg);
public class TelnetCom
{
private Socket m_sClient;
private Thread m_tRecvThread;
private bool m_bIsConnect;
private string m_strRecvMsg;
public event RecvMsgHandle eventRecvMsg;
public bool Connect(string strIp, string strPort)
{
m_sClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
string ipadd = strIp;
int port = Convert.ToInt32(strPort);
IPEndPoint ie = new IPEndPoint(IPAddress.Parse(ipadd), port);
try
{
m_sClient.Connect(ie);
m_bIsConnect = true;
}
catch (SocketException ex)
{
string strErrMsg = ex.Message;
m_bIsConnect = false;
return false;
}
StartRecvThread();
return true;
}
public void ShutConnect()
{
EndRevThread();
try
{
if (m_sClient != null)
{
m_sClient.Close();
}
}
catch (System.Exception ex)
{
string strErrMsg = ex.Message;
return;
}
}
public void StartRecvThread()
{
m_tRecvThread = new Thread(new ThreadStart(ReceivingMsg));
m_tRecvThread.Start();
}
public void EndRevThread()
{
try
{
if (m_tRecvThread != null)
{
m_tRecvThread.Abort();
}
}
catch (System.Exception ex)
{
string strErrMsg = ex.Message;
return;
}
}
public void ReceivingMsg()
{
while (true)
{
string strTemp = "";
while (true)
{
if (m_sClient.Available > 0)
{
byte[] data = new byte[1024];
int nRet = m_sClient.Receive(data);
if (nRet> 0)
{
strTemp += Encoding.UTF8.GetString(data, 0, nRet);
}
else
{
break;
}
}
else
{
break;
}
}
if (strTemp != "")
{
int nLen = strTemp.Length;
string[] strLines = strTemp.Split(new string[] { "\r\n" }, StringSplitOptions.None);
m_strRecvMsg = strTemp;
if (null != eventRecvMsg)
{
eventRecvMsg(m_strRecvMsg);
}
}
}
}
public void SendMsg(string strMsg)
{
string strMsgTemp = strMsg + "\r\n";
int nLen = strMsg.Length;
byte[] data = new byte[nLen];
data = Encoding.UTF8.GetBytes(strMsgTemp);
try
{
int nRet = m_sClient.Send(data);
}
catch (System.Exception ex)
{
string strErrMsg = ex.Message;
}
}
}
}