苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3612|回复: 3

[其他] C#点对点聊天

[复制链接]
发表于 2013-6-6 15:13:23 | 显示全部楼层 |阅读模式
就是那种木有服务器的,两个人直接通过IP进行链接然后对话,我尝试着写了一个,但貌似有点问题,望指教。代码贴在下面:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace 游戏1
{
    public partial class Formjiao : Form
    {
        private TcpListener lisp1;
        private Thread td;
        private static string xin = "";
        public Formjiao()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try {
                TcpClient client = new TcpClient(Formtalk.ipto,888);
                string mess = " "+Form3.yhm + DateTime.Now.ToString() + '\n' + richTextBox2.Text + "\n";
                NetworkStream netsm = client.GetStream();
                StreamWriter wsm = new StreamWriter(netsm,Encoding.Default);
                wsm.Write(mess);
                wsm.Flush();
                wsm.Close();
                client.Close();
                richTextBox1.AppendText(mess);
                richTextBox1.ScrollToCaret();
                richTextBox2.Text = "";
            }
            catch(Exception ex){
                MessageBox.Show(ex.Message);
            }
        }
        private void Formjiao_Load(object sender, EventArgs e)
        {
            td = new Thread(new ThreadStart(this.StartListen));
            td.Start();
            timer1.Start();
        }
        private void StartListen() {
            //          richTextBox2.Text = "";
            IPHostEntry host = Dns.GetHostEntry(Formtalk.ipto);
            IPAddress MyIP = host.AddressList[0];
            lisp1 = new TcpListener(MyIP,888);
            lisp1.Start();
            while (true) {
                TcpClient tct = lisp1.AcceptTcpClient();
                NetworkStream mstm = tct.GetStream();
                byte[] mb=new byte[1024];
                int i = mstm.Read(mb,0,mb.Length);
                xin = Encoding.Default.GetString(mb,0,i);
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (xin != "")
            {
                richTextBox1.AppendText(xin);
                richTextBox1.ScrollToCaret();
                xin = "";
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            richTextBox2.Text = "";
        }
    }
}



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-6-6 15:39:33 | 显示全部楼层
終了時に失われ 发表于 2013-6-6 15:27
非常感谢答复
但我想的是不需要服务端,只能有两个客户端进行交流的方法
简单的说:

我给你看的就是啊,就是两点之间通信的,上面之所以说一个服务,一个客户是区别两个端的,你可以认为两个都是客户端,或者两个都是服务端,就是两点间的通信。没有什么特别的。你可以参考一下。
发表于 2013-6-6 15:18:04 | 显示全部楼层
 楼主| 发表于 2013-6-6 15:27:44 | 显示全部楼层
yangying 发表于 2013-6-6 15:18
http://www.sufeinet.com/forum.php?mod=viewthread&tid=65
http://www.sufeinet.com/forum.php?mod=viewt ...

非常感谢答复
但我想的是不需要服务端,只能有两个客户端进行交流的方法
简单的说:
就是,我设计一个列表,把有客户端的联网电脑IP链接上,让他们可以进行聊天
因为是个人编的程序,不太可能会实现服务器长时间是打开的状态,想这样类似于两点直接传送消息的方式能不能实现
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-26 16:34

© 2014-2021

快速回复 返回顶部 返回列表