Socket监听并接收字符串

直接贴代码了。

/*监听器*/
class Listener
{
    /*监听线程*/
    private Thread listenerThread;
    /*监听者*/
    private TcpListener listener = null;
    /*监听的ip地址*/
    private IPAddress listenerIP = IPAddress.Parse("127.0.0.1");
    /*监听的端口*/
    private int listenerPort = 3000;
    
    /*设置set/get提供其他类访问接口*/
    public Thread getListenerThread()
    {
        return this.listenerThread;
    }
    public void setListenerThread(Thread listenerThread)
    {
        this.listenerThread = listenerThread;
    }
    public TcpListener getListener()
    {
        return this.listener;
    }
    public void setListener(TcpListener listener)
    {
        this.listener = listener;
    }

    /*开始监听线程*/
    public void StartListener()
    {
        listenerThread = new Thread(new ThreadStart(this.Listen));
        listenerThread.Start();
    }

    /*监听线程执行的程序*/
    private void Listen()
    {
        listener = new TcpListener(listenerIP, listenerPort);
        listener.Start();
        while (true)
        {
            String msg = "";
            TcpClient tcpclient = listener.AcceptTcpClient();
            NetworkStream ns = tcpclient.GetStream();
            byte[] buffer = new byte[40];
            try
            {
                ns.Read(buffer, 0, 40);
                msg = Encoding.GetEncoding("gb2312").GetString(buffer);
            }
            catch (Exception)
            {
                /*进行异常处理*/
            }
            finally
            {
                ns.Close();
                tcpclient.Close();
                tcpclient = null;
            }
            /*对接收到的信息msg进行操作*/

        }
    }
}

 如果是WinForm中要使用这个类,在窗体中添加FormClosing事件

private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
    if (this.listener != null)
    {
        if (this.listener.getEndListenerThread() != null)
        {
            if (this.listener.getListener() != null)
            {
                this.listener.getListener().Stop();
                this.listener.setListener(null);
            }
            this.listener.getEndListenerThread().Abort();
        }
        this.listener= null;
    }
}

 

 

posted @ 2013-03-26 11:36  苍云古齿  阅读(843)  评论(0)    收藏  举报