点对点的聊天:
namespace Chat
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Thread listenthread;//表示监听的线程
private string msg; //要发送的消息
private Socket socket1; //Socket类用于接收和发送信息
private IPEndPoint lep;
private void listenstart()//监听发入的信息
{
try
{
while (this.socket1.Connected)
{
//设置一个缓冲区
Byte[] stream = new Byte[1024];
socket1.Receive(stream);
//将获得的流转化为字符串类型
string message = Encoding.Default.GetString(stream);
//this.textBox1.Text=socket1.Available.ToString();
this.richTextBox2.AppendText(message);
this.richTextBox2.AppendText(" ");
}
}
catch//(Exception error)
{
if (!this.socket1.Connected)
{
socket1.Close();
button3.Enabled = true;
button5.Enabled = true;
}
}
}
private void button1_Click(object sender, System.EventArgs e)
{
//获取本地主机名称
string host = Dns.GetHostName();
this.textBox1.Text = host;
//获取本机IP
IPAddress[] addrs = Dns.Resolve("localhost").AddressList;
IPAddress addr = Dns.Resolve(host).AddressList[0];
//转化为标准的以点分隔的四部分格式
this.textBox2.Text = addr.ToString();
}
private void button3_Click(object sender, EventArgs e)
{
//获得监听端口
int hostport;
try
{
hostport = Int32.Parse(this.textBox5.Text);
if (hostport < 135 || hostport > 65400) hostport = 12800;
}
catch
{
hostport = 12800;
}
//IPAddress ipAddress = Dns.Resolve("localhost").AddressList[0];
IPAddress ipAddress = IPAddress.Parse("0.0.0.0");
lep = new IPEndPoint(ipAddress, hostport);
socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
socket1.Bind(lep);
socket1.Listen(10000);
this.statusBar1.Text = "等待连接...";
button3.Enabled = false;
button5.Enabled = false;
Thread watt = new Thread(new ThreadStart(waits));
watt.Start();
}
catch
{
button3.Enabled = true;
}
}
private void waits()
{
try
{
socket1 = socket1.Accept();
this.statusBar1.Text = "已建立连接";
listenthread = new Thread(new ThreadStart(listenstart));
listenthread.Start();
button3.Enabled = false;
button5.Enabled = false;
}
catch
{
button3.Enabled = true;
button5.Enabled = true;
}
}
private void button2_Click(object sender, EventArgs e)
{
if(socket1.Connected)
{
//将发送的字符串转换成字节数组
msg = "<"+this.textBox3.Text+">"+this.richTextBox1.Text;
Byte[] bytes=Encoding.Default.GetBytes(msg);
//发送数组
try
{
socket1.Send(bytes,bytes.Length,SocketFlags.None);
this.richTextBox1.Text="";
}
catch
{
}
//this.richTextBox2.AppendText(msg);
}
}
private void button4_Click(object sender, EventArgs e)
{
this.richTextBox2.Text = "";
}
private void button5_Click(object sender, EventArgs e)
{
//获得连接端口
int hostport;
try
{
hostport=Int32.Parse(this.textBox6.Text);
if(hostport<135||hostport>65400)hostport=12800;
}
catch
{
hostport=30000;
}
try
{
//得到需连接的地址
lep = new IPEndPoint(IPAddress.Parse(this.textBox4.Text),hostport);
}
catch(Exception err)
{
MessageBox.Show(err.Message);
}
//构造socket1实例,并请求连接
socket1= new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
try
{
socket1.Connect(lep);
if(socket1.Connected)this.statusBar1.Text="连接成功";
//开始监听
listenthread=new Thread(new ThreadStart(listenstart));
listenthread.Start();
button5.Enabled=false;
button3.Enabled=false;
}
catch
{
button5.Enabled=true;
button3.Enabled=true;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
socket1.Close();
if (this.listenthread!=null)
{
//如果线程还处于运行状态就关闭它
if (this.listenthread.ThreadState==ThreadState.Running)
{
this.listenthread.Abort();
}
}
}
catch
{
}
}
}
}
分享到:
相关推荐
在这个C#实现的点对点聊天项目中,我们将深入探讨相关的核心技术与知识点。 1. **C#编程语言**:C#是微软开发的一种面向对象的编程语言,广泛用于Windows、Web和移动应用程序开发。在P2P聊天应用中,C#提供了一套...
本项目“Java实现的点对点聊天”是使用MyEclipse 8.6这个集成开发环境开发的,主要运用Java语言来构建这样一个系统。下面我们将详细探讨相关的技术知识点。 首先,我们要理解Java的基础知识。Java是一种面向对象的...
在这个“简单的C语言点对点聊天程序”中,我们可以学习到如何使用C语言来实现基本的通信功能,这对于初学者来说是一次宝贵的实践机会。点对点(Peer-to-Peer, P2P)聊天程序是计算机网络通信的一个经典示例,它允许...
本项目“用C#实现点对点聊天”旨在通过TCP/IP协议创建一个简单的点对点通信系统,使得两个用户能够进行实时聊天。TCP/IP协议是互联网通信的基础,确保了数据的可靠传输。 点对点(P2P)通信模型不同于传统的客户端-...
点对点聊天的小程序,发送端和接收端 可以进行循环聊天 含有注释
【C# 简单点对点聊天】 在IT领域,点对点(P2P,Peer-to-Peer)通信是一种常见的网络通信模式,它允许网络中的两个或多个节点之间直接进行交互,无需通过中央服务器作为中介。C#,作为一种功能强大的面向对象编程...
在本文中,我们将深入探讨C#编程语言如何用于创建点对点聊天工具,以及实现这一功能所需的关键技术和概念。 首先,我们需要理解C#的基础。C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows应用开发、...
在本文中,我们将深入探讨如何使用C#编程语言构建一个点对点聊天应用程序,以及如何实现窗口震动功能。C#是一种强大的、面向对象的编程语言,由微软开发,广泛应用于Windows桌面应用、游戏开发和服务器端编程。点对...
p2p点对点聊天程序,下载试试看,很好的程序模式
在这个场景中,我们将深入探讨点对点聊天程序的实现原理和关键知识点。 1. **网络通信基础** - **TCP/IP协议**:在点对点聊天程序中,TCP(传输控制协议)通常用于保证数据的可靠传输,确保消息的完整性和顺序。 ...
在这个场景下,我们看到的是一个基于Java实现的简单点对点聊天室项目。该项目由两个主要的Java源文件组成:`Myserversocket.java`和`Mysocket.java`,它们分别代表了服务器端和客户端的角色。 首先,让我们来看看`...
在点对点聊天室中,每个用户既是客户端也是服务器,需要监听来自其他用户的连接请求并能够主动向其他用户发送消息。这就涉及到多线程技术。多线程允许程序同时执行多个任务,提高应用程序的响应性和效率。在我们的...
【Java点对点聊天代码详解】 点对点(Peer-to-Peer, P2P)聊天是一种通信模式,其中每个参与者既是客户端又是服务器,可以互相发送和接收消息。在这个基于Java的简单点对点聊天系统中,我们将探讨如何构建这样一个...
【易语言点对点聊天源代码】是一款使用易语言编写的简单聊天程序,适用于初学者了解和学习点对点通信的基本原理和编程技术。易语言是中国本土开发的一种面向对象的编程语言,以其易于理解和使用的汉字编程语法而得名...
在本文中,我们将深入探讨如何实现一个点对点聊天系统,涉及的技术包括网络编程、加密通信、数据传输协议等。 1. **网络编程基础**: - **套接字(Sockets)**:是网络编程的基本接口,用于在不同计算机之间建立...
综上所述,实现一个C#点对点聊天程序需要掌握网络编程基础,包括套接字操作、IP和端口的使用,以及数据的序列化与传输。同时,要熟悉多线程和异步编程,以处理并发连接和用户交互。在实际开发中,还需要关注程序的...
点对点聊天源码是基于.NET框架,使用C#编程语言在Visual Studio 2008环境下开发的一款通信软件。这种类型的软件允许两个或多个用户之间直接进行实时交流,无需通过中央服务器作为中介,因此具有较高的隐私性和效率。...
点对点聊天是一种通信模式,其中两个设备,通常称为客户端,可以直接相互通信,而无需通过中央服务器作为中介。在本示例中,"点对点聊天(TcpClient)"使用了C#编程语言来实现这一功能。TcpClient是.NET Framework中的...
点对点聊天(P2P,Peer-to-Peer)是一种通信模式,其中每个参与者既是客户端又是服务器,可以相互通信并直接交换数据。在服务器端实现点对点聊天系统涉及多个关键技术点,以下将详细阐述这些关键概念和实现步骤。 1...