大家帮我看看!(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(); }
}
}
我做了一个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(); }
}
}
我单击监听按钮???等待接受数据。我输入对方的ip地址加内容 是给对方发送数据 因为对方也正在监听