大家帮我看看!(c#)
我做了一个p2p小程序,有一个监听按钮,和一个发送按钮,一个文本框是填写昵称的,一个文本框是输入内容的,列表框是记录聊天信息的,我在不是一个网络段的2台机器上测试了,我发送数据到另一方可以,但另一方发送数据给我就不行了。原代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;namespace p2p
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //调解线程
            CheckForIllegalCrossThreadCalls = false;
        }        private void Form1_Load(object sender, EventArgs e)
        {
            
        }
        
        //线程
        private Thread th;        private TcpListener tcpl;
        //开始监听标志
        private bool run = true;        //监听方法
        private void listen()
        {
            try
            {
                tcpl = new TcpListener(7200);
                tcpl.Start();
                statusBar1.Text = "正在监听";
                while (run)
                {
                    Socket s = tcpl.AcceptSocket();
                    byte[] stream = new byte[80];
                    int i = s.Receive(stream);
                    string message = System.Text.Encoding.UTF8.GetString(stream);
                    listBox1.Items.Add(message);                }
            }
            catch(System .Security .SecurityException)
            { 
                MessageBox .Show ("防火墙安全错误!","错误",MessageBoxButtons .OK ,MessageBoxIcon.Exclamation );
            }
            catch(Exception )
            {
                statusBar1.Text = "已停止监听!";
            }
        }        //发送数据方法
        private void send()
        {
            try
            {
                string msg = "<"+textBox2.Text+">" + textBox3.Text;
                TcpClient tcpc = new TcpClient(textBox1 .Text ,7200);
                NetworkStream tcpstream=tcpc.GetStream ();                StreamWriter r = new StreamWriter(tcpstream);
                r.Write(msg);
                r.Flush();
                tcpstream.Close();
                tcpc.Close();
                listBox1.Items.Add(msg);            }
            catch
            {
                statusBar1.Text = "目标计算机拒绝连接请求";
            }
           
        }        //停止监听
        private void stop()
        {
            tcpl.Stop();
            th.Abort();
        }        private void button1_Click(object sender, EventArgs e)
        {
            this.button1.Enabled = false;
            this.button2.Enabled = true;
            th = new Thread(new ThreadStart (listen));
            th.Start();
        }        private void button3_Click(object sender, EventArgs e)
        {
            send();
        }        private void button2_Click(object sender, EventArgs e)
        {
            this.button1.Enabled = true ;
            this.button2.Enabled = false ;
            run = false;
            stop();        }
    }
}