高分求解!!!soket编程,这个为什么只能单方接受(p2p)(c#)

a19895161989516 2009-04-16 11:20:22
大家帮我看看!(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();

}
}
}
...全文
86 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
a19895161989516 2009-04-16
  • 打赏
  • 举报
回复
我在 说清楚点 这是类似与p2p的!!! 没服务器和客服端已说

我开的7200端口接受数据 我发送数据时候也是向对方的7200端口发送数据


我单击监听按钮???等待接受数据。我输入对方的ip地址加内容 是给对方发送数据 因为对方也正在监听
yangqidong 2009-04-16
  • 打赏
  • 举报
回复
看看双方子网掩码是不是设置一样的
wanabe 2009-04-16
  • 打赏
  • 举报
回复
客户端和服务器的接收和发送分开端口来处理
wanabe 2009-04-16
  • 打赏
  • 举报
回复
客户端和服务器你分开两个端口接收和发送
xu54647265 2009-04-16
  • 打赏
  • 举报
回复
不会是防火墙给OX了吧……
a19895161989516 2009-04-16
  • 打赏
  • 举报
回复
很郁闷呀!!!
a19895161989516 2009-04-16
  • 打赏
  • 举报
回复
没人知道吗??????????
在线等待中!!!

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧