我已用sockets类做了一个点对点的简单聊天程序;
以下是几个问题:
1)如果局域网内有几台电脑装了聊天程序,请问怎么可以找到已安装聊天程序的电脑(前提是程序已启动)?;
2)怎么可以实现广播群发?;
-------------------------------------
请各位老师指点!!!
以下是几个问题:
1)如果局域网内有几台电脑装了聊天程序,请问怎么可以找到已安装聊天程序的电脑(前提是程序已启动)?;
2)怎么可以实现广播群发?;
-------------------------------------
请各位老师指点!!!
解决方案 »
- 如何设置DataGridView单元格的边框
- 问个很奇怪的问题。关于数据库的。
- 如何 在Form2中调用Form1的函数?(函数的作用是改变Form1的label1.text的值)
- 离散点生成等值线
- 在线等,方法调用问题
- C/S结构如何远程访问实现方法?
- 引用究竟是什么?
- 问一个很菜的问题:数据库层用静态方法,还是实例化方法?
- 问题一:fs=Directory.GetFiles(fbd.SelectedPath[color=#FF0000],"*.jpg[/color]") 我希望路
- 属性,索引器,委托,事件?不懂?不懂?
- 怎么用程序重新启动一系列的Windows Services?
- 初学者简单一问:windows service程序创建后生成成功了,如何安装呀?
-----------------------------
private void StartListen()
{
MyTcpListener=new TcpListener(888);
//开始监听
MyTcpListener.Start();
while(true)
{//获取TcpClient
TcpClient MyTcpClient=MyTcpListener.AcceptTcpClient();
NetworkStream MyStream=MyTcpClient.GetStream();
byte[] MyBytes = new byte[1024];
int MyBytesRead=MyStream.Read(MyBytes,0,MyBytes.Length);
//string MyMessage=System.Text.Encoding.Default.GetString(MyBytes,0,MyBytesRead);
string MyMessage=System.Text.Encoding.UTF8.GetString(MyBytes,0,MyBytesRead);
this.richTextBox2.Text+=MyMessage;
}
}
private void button1_Click(object sender, System.EventArgs e)
{//发送聊天内容
if(this.textBox1.Text.Length<1||this.textBox2.Text.Length<1||this.richTextBox1.Text.Length<1)
return;
try
{
string MyMessage= this.textBox2.Text+":"+this.richTextBox1.Text+"\n";
//根据目标计算机地址建立连接
TcpClient MyTcpClient = new TcpClient(this.textBox1.Text, 888);
//获得用于网络访问的数据流
NetworkStream MyTcpStream =MyTcpClient.GetStream();
StreamWriter MyStream = new StreamWriter(MyTcpStream);
//将字符串写入流
MyStream.Write(MyMessage);
//将缓冲数据写入基础流
MyStream.Flush();
//关闭网络流
MyStream.Close();
MyTcpClient.Close();
this.richTextBox3.AppendText(this.richTextBox1.Text+"\n");
this.richTextBox1.Clear();
}
catch(Exception Err)
{
MessageBox.Show(Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
private void Form1_Load(object sender, System.EventArgs e)
{//开始监听
//创建监听线程
this.MyListenThread= new Thread(new ThreadStart(StartListen));
//启动线程
this.MyListenThread.Start();
} private void Form1_Closed(object sender, System.EventArgs e)
{//关闭SOCKET
try
{
if (this.MyTcpListener!=null)
{//关闭监听器
this.MyTcpListener.Stop();
}
if (this.MyListenThread!=null)
{ //如果线程还处于运行状态就关闭它
if (this.MyListenThread.ThreadState==ThreadState.Running)
{
this.MyListenThread.Abort();
}
}
}
catch(Exception Err)
{
MessageBox.Show(Err.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
------------------------------
1) 在程序设计窗体中有两个textBox控件,三个RichTextBox控件,一个Button控件;
2) textBox1为接受主机的地址;textBox2为姓名;RichTextBox1为将要发送的内容;RichTextBox2为已经接收的内容;RichTextBox3为已经发达的内容;Button1为发送按钮。
用c#做的还有源码下载
看他的blog:
http://tuyile006.cnblogs.com
可是我现在不知从哪入手呀!!!
但是找到其它已启动聊天程序的电脑是用什么实现!!!
1)如果是第一种方式,请您指点一下思路!!!
1)如果是第一种方式,请您指点一下思路,或者举个实例;谢谢!!
告诉你思路还是可以的.
其实很简单的,你的程序要分为服务端和客户端,就是server and client
server 的工作就是接收client的信息分析目标地址,再转发出去.
client 的工作就是发送客户消息,当然要选择目标(有目标地址).
client发送消息的时候其实是发给serve,通过server对消息进行解析,得到目标地址,转发到目的地.
请问这种思路具体会用到哪几个通讯类: 比如...
这三个是必须的.其他的系统类我想不起来了.
其余的都是自己根据业务需要写的.