csharp socket编程{p2p}帮我分析怎么找到问题所在

a19895161989516 2009-04-17 11:36:20
大家帮我看看!(c#)
我做了一个p2p小程序,有一个监听按钮,和一个发送按钮,一个文本框是填写昵称的,一个文本框是输入内容的还有一个文本框是输入对方ip地址的,列表框是记录聊天信息的,我在不是一个网络段的2台机器上测试了,我发送数据到另一方可以,但另一方发送数据给我就不行了。【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();

}
}
}
...全文
331 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xufzu123 2009-04-20
  • 打赏
  • 举报
回复
学习~~
我很懒 2009-04-20
  • 打赏
  • 举报
回复
这个有难度吗?我有现成的源码,留个邮箱吧!我发给你看合适不.
a19895161989516 2009-04-20
  • 打赏
  • 举报
回复
谢谢了 ... 我 刚刚接触这个方面, 我的邮箱是 1362584159@163.com 我的QQ是342307003
虽然没难度 但你最好分析下 我的原因所在 .. 万分感谢...
nykcsoft 2009-04-20
  • 打赏
  • 举报
回复
yujiebo3@sina.com
谢谢
boywangliang 2009-04-19
  • 打赏
  • 举报
回复
a19895161989516 2009-04-19
  • 打赏
  • 举报
回复
好像和我的问题 没有直接关系 , 但 给socket复用 和socket连接超时机制不错
NeptuneGrass 2009-04-18
  • 打赏
  • 举报
回复
a19895161989516 2009-04-18
  • 打赏
  • 举报
回复
?????????

111,126

社区成员

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

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

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