简单的c# TCP通讯

来源:互联网 发布:事业单位考试软件 编辑:程序博客网 时间:2024/05/14 16:09

TCP通讯

2009823日星期日

服务器

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

using System.IO;

using System.Net.Sockets;

using System.Threading;

using System.Net;

using System.Collections;

namespace 服务器

{

    public partial class Form1 : Form

    {

                //变量

        private ThreadStart start;

        private Thread listenThread,client_th;

        static private bool m_bListening = false;

        static private System.Net.IPAddress MyIP = System.Net.IPAddress.Parse("127.0.0.1");

        static private TcpListener listener = new TcpListener(MyIP, 5567);

        private String msg;

 

        ArrayList clientArray = new ArrayList();

 

        public Form1()

        {

            InitializeComponent();

            Control.CheckForIllegalCrossThreadCalls = false;

            start = new ThreadStart(startListen);

            listenThread = new Thread(start); 

        }

 

        private void btnStart_Click(object sender, EventArgs e)

        {

            if (m_bListening)

            {

                m_bListening = false;

                label4.Text = "Server Idle...";

            }

            else

            {

                m_bListening = true;

                listenThread.Start();

                label4.Text = "Server Listening...";

            }

        }

        private void showmore()

        {

            textBox1.Text = msg;

        }

        private void startListen()

        {

            //textBox1.Text = "listening...";

            listener.Start();

            //接收数据

            while (m_bListening)

            {

                //测试是否有数据

                try

                {

                    TcpClient client = listener.AcceptTcpClient();

                    clientArray.Add(client);

                    ParameterizedThreadStart threadStart = new ParameterizedThreadStart(AcceptMsg);

                    client_th = new Thread(threadStart);

                    client_th.Start(client);

                   

                }

                catch (Exception re)

                {

                    MessageBox.Show(re.Message);

                }

 

            }

            listener.Stop();        //

        }

        private void AcceptMsg(object arg)

        {

            TcpClient client = (TcpClient)arg;

            NetworkStream ns = client.GetStream();

            //StreamReader sr = new StreamReader(ns);//流读写器

            //字组处理

            while (true)

            {

                try

                {

 

                    byte[] bytes = new byte[1024];

                    int bytesread = ns.Read(bytes, 0, bytes.Length);

                    msg = Encoding.Default.GetString(bytes, 0, bytesread);

                    //显示

                    //MessageBox.Show(msg);

                    showmore();

                    ns.Flush();

                    //ns.Close();

                }

                catch

                {

                    MessageBox.Show("与客户端断开连接了");

                    break;

                }

            }

        }

 

        private void btnSend_Click(object sender, EventArgs e)

        {

            object a = clientArray[0];

            TcpClient client = (TcpClient)clientArray[0];

            if (client == null)

                return;

            NetworkStream sendStream = client.GetStream();

            String msg = textBox1.Text;

            Byte[] sendBytes = Encoding.Default.GetBytes(msg);

            sendStream.Write(sendBytes, 0, sendBytes.Length);

            sendStream.Flush();

            //sendStream.Close();

        }

    }

}

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

using System.IO;

using System.Net.Sockets;

using System.Threading;

 

namespace 客户端

{

    public partial class Form1 : Form

    {

        private TcpClient client;

        private Thread client_th;

        public Form1()

        {

            InitializeComponent();

            Control.CheckForIllegalCrossThreadCalls = false;

        }

 

       private void button1_Click(object sender, EventArgs e)

        {

            String mystr = textBox1.Text;

            string ip = "127.0.0.1";

 

           this.connect_s(ip);

       

        }

        public void connect_s(string ip)

        {

            try

            {

                client = new TcpClient(ip, 5567);

                ThreadStart threadStart = new ThreadStart(AcceptMsg);

                client_th = new Thread(threadStart);

                client_th.Start();

                textBox2.Text="连接成功";

 

            }

            catch(System.Exception e)

            {

                textBox2.Text = e.ToString(); ;

 

            }

        }

        private void AcceptMsg()

        {

            NetworkStream ns = client.GetStream();

 

            //StreamReader sr = new StreamReader(ns);//流读写器

            //字组处理

            while (true)

            {

                try

                {

                    byte[] bytes = new byte[1024];

                    int bytesread = ns.Read(bytes, 0, bytes.Length);

                    string msg = Encoding.Default.GetString(bytes, 0, bytesread);

                    //显示

                    //MessageBox.Show(msg);

                    textBox1.Text = msg;

                    ns.Flush();

                    //ns.Close();

                }

                catch

                {

                    MessageBox.Show ("与服务器断开连接了");

                    break;

                }

            }

        }

 

        private void btnSend_Click(object sender, EventArgs e)

        {

            if (client == null)

                return;

            NetworkStream sendStream = client.GetStream();

            String msg = textBox1.Text;

            Byte[] sendBytes = Encoding.Default.GetBytes(msg);

            sendStream.Write(sendBytes, 0, sendBytes.Length);

            sendStream.Flush();

            //sendStream.Close();

            textBox1.Text = "Msg Sent!";

        }

    }

}

原创粉丝点击