SeeK.CS 创作自己的作品

思绪来去匆匆,偶尔在这停留。
随笔 - 8, 文章 - 0, 评论 - 45, 引用 - 0
数据加载中……

置顶随笔

[置顶][开源]MiniChat Beta 1.0——局(广)域网多人聊天程序,支持文件传输

 

一、作品简介:

MiniChat是本人编写的一款多人聊天程序,主要用于局域网或广域网内用户间的实时通讯。用户界面美观友好,支持公共聊天、私人聊天、聊天记录、文件传输、任务栏实时通知等功能。该程序采用C/S三层架构,多线程Socket通信方式。Cient端采用TcpClient类连接服务器,使用NetworkStream传送数据。Server端采用TcpListener监听本地端口,并使用多线程为每个用户建立独立Socket连接并与client通信。

二、主要功能:

1、 公共聊天。用户的聊天内容可被聊天室内所有用户看见。

2、 私人聊天。用户的聊天内容只对聊天双方可见。

3、 聊天记录。服务器端采用SQL Server2005保留所有用户的聊天记录。客户端采用access保存用户本人的公共、私人聊天记录。

4、 任务栏实时通知。服务器端采用最小化到系统托盘等技术,在有用户上下线,用户收发信息时均有类似于MSN的消息提示。客户端最小化时有相关信息时也有类似于MSN的消息提示。

5、 其他辅助功能例如字体颜色等。

6、 文件传输。用户可以采用P2P模式进行文件传输。

三、主要流程图:

四、其他说明:

该程序采用VS2005编写。运行时需要.netFramework2.0支持。其中服务端数据库采用SQL server2005,客户端使用Access。日志文件记录在程序启动位置的LOG文件夹下。主要地方代码中已经详细注释。
/Files/seek/MiniChatBeta1.0.rar

posted @ 2008-05-15 20:05 seek 阅读(740) | 评论 (9)编辑

2008年5月25日

[趣味编程]CPU占用率曲线听我指挥

     摘要: 写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率。程序越精简越好,计算机语言不限。例如,可以实现下面三种情况:1. CPU的占用率固定在50%,为一条直线;2. CPU的占用率为一条直线,但是具体占用率由命令行参数决定(参数范围1~ 100);3. CPU的占用率状态是一个正弦曲线。Google上搜索,可以找到第一题和第3题的C++描述。本人写了个C#版本...  阅读全文

posted @ 2008-05-25 23:03 seek 阅读(2116) | 评论 (15)编辑

2008年5月21日

[基础文章]浅谈文件拖放

.NetFramework2.0中为我们提供好了丰富的"后台资源",以便提高我们的编程效率.这里本人也结合自己做的聊天程序(见置顶文章)中遇到的问题来浅谈一下文件拖放.
步奏:
1、将拖放目标控件AllowDrop属性设置为True(并不是所有的控件都支持文件拖放哦^_^)

this.AllowDrop=True;
2、写拖放目标控件的DragEnter事件。
private void Frm_Chat_DragEnter(object sender, DragEventArgs e)
        
{
            
if (listBox.SelectedIndex != -1)
            
{
                
if (e.Data.GetDataPresent(DataFormats.FileDrop))
                
{
                    e.Effect 
= DragDropEffects.Link;
                }

                
else
                
{
                    e.Effect 
= DragDropEffects.None;
                }

            }

            
else
            
{
                MessageBox.Show(
"请选择一个用户");
            }

        }
3、写拖放目标控件的DragDrop事件
 private void Frm_Chat_DragDrop(object sender, DragEventArgs e)
        
{
            
if (listBox.SelectedIndex != -1)
            
{
                
//关键语句
                receiveFileName = ((Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();
                
string[] filename = sendFile.Split('\\');
                
//MessageBox.Show(filename[filename.Length - 1]);
                string text = "FILE|" + listBox.SelectedItem.ToString() + "|" + username + "|" + filename[filename.Length - 1+ "|RQ|";
                
byte[] buffer = System.Text.Encoding.Default.GetBytes(text);
                Form1.netStream.Write(buffer, 
0, buffer.Length);
                btnFileTrans.Enabled 
= false;
            }

            
else
            
{
                MessageBox.Show(
"请选择一个用户");
            }

        }
到此,一个简单的文件拖放功能可以算是完成了。但是在实际应用中常常会出现“DragDrop注册失败”异常,这个问题是由于目标控件是在另外一个独立线程中打开。解决方法也很简单,只需表明当前线程为单线程单元即可。
   Thread loadThread = new Thread(new ThreadStart(Connect));
           loadThread.IsBackground 
= true;
           
//表明将当前线程设置为单线程单元
           loadThread.ApartmentState = ApartmentState.STA;
           loadThread.Start();

posted @ 2008-05-21 09:28 seek 阅读(157) | 评论 (1)编辑

2008年5月15日

[开源]MiniChat Beta 1.0——局(广)域网多人聊天程序,支持文件传输

 

一、作品简介:

MiniChat是本人编写的一款多人聊天程序,主要用于局域网或广域网内用户间的实时通讯。用户界面美观友好,支持公共聊天、私人聊天、聊天记录、文件传输、任务栏实时通知等功能。该程序采用C/S三层架构,多线程Socket通信方式。Cient端采用TcpClient类连接服务器,使用NetworkStream传送数据。Server端采用TcpListener监听本地端口,并使用多线程为每个用户建立独立Socket连接并与client通信。

二、主要功能:

1、 公共聊天。用户的聊天内容可被聊天室内所有用户看见。

2、 私人聊天。用户的聊天内容只对聊天双方可见。

3、 聊天记录。服务器端采用SQL Server2005保留所有用户的聊天记录。客户端采用access保存用户本人的公共、私人聊天记录。

4、 任务栏实时通知。服务器端采用最小化到系统托盘等技术,在有用户上下线,用户收发信息时均有类似于MSN的消息提示。客户端最小化时有相关信息时也有类似于MSN的消息提示。

5、 其他辅助功能例如字体颜色等。

6、 文件传输。用户可以采用P2P模式进行文件传输。

三、主要流程图:

四、其他说明:

该程序采用VS2005编写。运行时需要.netFramework2.0支持。其中服务端数据库采用SQL server2005,客户端使用Access。日志文件记录在程序启动位置的LOG文件夹下。主要地方代码中已经详细注释。
/Files/seek/MiniChatBeta1.0.rar

posted @ 2008-05-15 20:05 seek 阅读(740) | 评论 (9)编辑

2008年5月11日

C#中进行文本打印

     摘要: 问题描述: 做了个记事本程序,要求能按标准打印其中的文档,包括在每行文字数目上进行控制等。解决方法:一、搞清楚打印的过程:1、定义PrintDocument类,并且声明其PrintPage事件。privatevoidPrintDocument(){printDocument=newPrintDocument();printDocument.PrintPage+=newPrintPageEventH...  阅读全文

posted @ 2008-05-11 17:34 seek 阅读(993) | 评论 (0)编辑

2008年4月30日

[原创]屏幕部分截取工具

     摘要:   阅读全文

posted @ 2008-04-30 09:52 seek 阅读(440) | 评论 (4)编辑