Telnet通信类

自己的封装的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;
            }


            
        }


    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值