首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

初学者 C# tcp connect连接有关问题

2013-06-26 
菜鸟 求助C# tcp connect连接问题用TCP出现的问题,求助服务端private void Form1_Load(object sender, Eve

菜鸟 求助C# tcp connect连接问题
用TCP出现的问题,求助
服务端
private void Form1_Load(object sender, EventArgs e)
        {
            Thread t = new Thread(new ThreadStart(ListenerThread));
            t.IsBackground = true;
            t.Start();
        }

        private void ListenerThread()
        {
            try
            {
                tcpListener = new TcpListener(new IPEndPoint(IPAddress.Parse("192.168.2.92"), 12000));
                tcpListener.Start();
                this.Invoke((EventHandler)delegate
                {
                    listBox1.Items.Add("正在监听12000端口");
                });
                while (true)
                {
                    TcpClient tcpClient = tcpListener.AcceptTcpClient();
                    IPEndPoint ep = (IPEndPoint)tcpClient.Client.RemoteEndPoint;
                    this.Invoke((EventHandler)delegate
                    {
                        listBox1.Items.Add("有客户端连接成功!");

                        string ip = ep.Address.ToString();
                        int port = ep.Port;
                        listBox1.Items.Add("IP:" + ip + ",端口" + port.ToString());
                    });
                    NetworkStream netStream = tcpClient.GetStream();
                    StreamWriter writer = new StreamWriter(netStream);
                    StreamReader reader = new StreamReader(netStream);


                    string temp = reader.ReadLine();
                    this.Invoke((EventHandler)delegate
                    {
                        listBox1.Items.Add(temp);
                    });
                    writer.WriteLine(temp.ToUpper());
                    writer.Flush();
                    reader.Close();
                    writer.Close();
                    netStream.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
客户端
public partial class Form1 : Form
    {
        TcpClient tcpClient;
        public Form1()
        {
            InitializeComponent();
        }

        private void SendData()
        {
            //TcpClient tcpClient = new TcpClient();
            //tcpClient.Connect(new IPEndPoint(IPAddress.Parse("192.168.2.92"), 12000));
            NetworkStream ns = tcpClient.GetStream();
            StreamWriter writer = new StreamWriter(ns);
            StreamReader reader = new StreamReader(ns);
            writer.WriteLine(textBox1.Text.Trim());
            writer.Flush();
            string temp = reader.ReadLine();
            this.listBox1.Items.Add(temp);
            writer.Close();


            reader.Close();
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            SendData();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            tcpClient = new TcpClient();
            tcpClient.Connect(new IPEndPoint(IPAddress.Parse("192.168.2.92"), 12000));
        }
    }
出现的问题是客户端只能向服务器端发一次数据,第二次发数据,就会报 不允许对非连接的套接字执行此操作
如果把Form1_Load中代码去掉,SendData()中注释的代码 去掉注释,就能正常的多次发送了,但是这样,每次都要连接一次, 好像很明显,这样的代码,没有意义啊。求大侠们帮忙。

热点排行