简单的c# TCP通讯

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!";

        }

    }

}

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值