首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > 利用P2P技术实现点对点聊天
【标  题】:利用P2P技术实现点对点聊天
【关键字】:P2P
【来  源】:http://blog.csdn.net/Jon_Pilot/archive/2006/09/15/1225566.aspx

利用P2P技术实现点对点聊天

using System.Data;
using System.IO;
using System.Net.Sockets;
using System.Threading;

private Thread th;
private TcpListener tcpl;
private bool listenerRun = true;

private void Listen()
{
    
try
    {
        tcpl 
= new TcpListener(5656);
        tcpl.Start();
        statusBar1.Text 
= "正在监听...";

        
while(listenerRun)
        {
            Socket s 
= tcpl.AcceptSocket();
            Byte[] stream 
= new Byte[80];
            
int i=s.Receive(stream) ;
            
string message = System.Text.Encoding.UTF8.GetString(stream);
            richTextBox1.AppendText(message);
        }
    }
    
catch(System.Security.SecurityException)
    {
        MessageBox.Show(
"防火墙安全错误!""错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    }
    
catch(Exception)
    {
        statusBar1.Text 
= "已停止监听!";
    }
}

private void Send()
{
    
try
    {
        
string msg = "<"+textBox3.Text+">"+textBox2.Text;
        TcpClient tcpc 
= new TcpClient(textBox1.Text, 5656);
        NetworkStream tcpStream 
= tcpc.GetStream();

        StreamWriter reqStreamW 
= new StreamWriter(tcpStream);
        reqStreamW.Write(msg);
        reqStreamW.Flush();
        tcpStream.Close();
        tcpc.Close();
        richTextBox1.AppendText(msg);
        textBox2.Clear();
    }
    
catch(Exception)
    {
        statusBar1.Text 
= "目标计算机拒绝连接请求!";
    }
}

private void Stop()
{
    tcpl.Stop();
    th.Abort();
}

[STAThread]
static void Main() 
{
    Application.Run(
new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
{
    button1.Enabled 
= false;
    button2.Enabled 
= true;
    th 
= new Thread(new ThreadStart(Listen));    
    th.Start();
}

private void button2_Click(object sender, System.EventArgs e)
{
    button1.Enabled 
= true;
    button2.Enabled 
= false;
    listenerRun 
= false;
    Stop();
}

private void button3_Click(object sender, System.EventArgs e)
{
    Send();
}
在ASP.NET中实现页面之间的传参:【上一篇】
.net企业应用高级编程 第五章 自动化处理和事务处理(基于C# XML)案例:【下一篇】
【相关文章】
  • msgrp2p
  • ESFramework扩展之NaptP2P -- 可靠的P2P传递
  • P2P之UDP穿透NAT的原理与实现(ZT)
  • P2P原理的解释与实现
  • Share P2Pcast sourcecode and papers(zz)
  • iptables加载ipp2p模块
  • ESFramework扩展之NaptP2P -- 基于ESFramework的P2P实现
  • 怎样用Netfilter/IPtables控制P2P流量CISCO产品
  • 使用iptables的功能扩展全面封杀P2P流量(不要重新编译内核及Netfilter模块)
  • 使用iptables的功能扩展全面封杀P2P流量
  • 【随机文章】
  • Visual Studio 2005 Web Application Projects (RC1)的一个Bug
  • netstat工具
  • ASP获取浏览器当前路径
  • 用Dreamweaver做在线试衣
  • 鼠标光标制作程序
  • 求prime 的一种方法
  • 常用文件重定向命令
  • SQL循序渐进(6)删除表
  • “龙芯”盒子下用虚拟机运行的几种操作系统(截图)
  • Sarge下xine-ui的郁闷
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.