点对点通信聊天程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

点对点通信聊天程序

设计文档:

基于SOCKET的点对点通信聊天

Socket是套接字的意思。在套接字下编程很像打电话的过程,打电话之前先申请一条电话线,假设已接至办公室墙上,则相当于申请一个与其他应用程序通信的输入输出接口,而改程序到底与哪个程序通信,取决于其IP地址。此时,IP就相当于我们要拨打的电话号码,如果对方也申请了一个Socket,我们就可以根据其IP地址跟对方聊天。

1.服务器方

服务器等待用户从主窗口发来的启动接收消息过程如下:

首先建立自己的套接口。

然后建立连接调用listen()函数,开始倾听,再通过accept()等待接收连接。Accept()等待请求队列中的请求,一旦有连接请求来到,就可以建立一个与s有相同属性的套接口。最后关闭套接口。

2.客户方

客户等待用户从主窗口发来的发送命令,一旦接收到发送请求,调用函数初始化socket,窗口函数在收到UNSOCK消息后,判断是由哪个事件引起的,第一次必然是由连接事件引起的,这样就会执行相同的程序。

3.程序流程

在寻求连接的过程中可能会出现阻塞,是由于操作系统本身原因或者通信信道被其他程序长

时间占用等导致函数无法返回。这是被阻塞函数会不断调用系统函数来保持消息循环的正常运行。

Group函数

group函数是对数据集按照某个字段或者表达式进行分组,获得一组组的集合,然后从每组中取出一个

指定字段或者表达式的值,放到单元格中进行扩展,扩展出来的每个单元格都保留了一个指针指向当前的组集,

该组集称为当前组。

因此在附属单元格中,需要对该组集进行操作时,不需要用任何条件和主单元格关联,如果加设了条件,反倒导致报表引擎还对组集中的记录进行遍历检索。

概要设计:

完成的程序应实现如下功能:

1 服务器端服务

2 客户机服务

3点对点的聊天服务。

完成后可看到如下客户页面

只需在对话框里输入信息就可以实现点对点聊天了。

程序源代码:

using System;

using System.Drawing;

using System.Collections;

using ponentModel;

using System.Windows.Forms;

using System.Data;

using ;

using .Sockets;

using System.IO;

using System.Threading;

using System.Text;

namespace 点对点聊天

{

///

/// Form1 的摘要说明。

///

public class Form1 : System.Windows.Forms.Form

{

private bel label1;

private System.Windows.Forms.Button button1;

private System.Windows.Forms.TextBox textBox1;

private bel label2;

private System.Windows.Forms.TextBox textBox2;

private bel label3;

private System.Windows.Forms.TextBox textBox3;

private System.Windows.Forms.TextBox textBox4;

private System.Windows.Forms.Button button2;

private bel label4;

private System.Windows.Forms.Button button3;

private System.Windows.Forms.RichTextBox richTextBox1; private System.Windows.Forms.GroupBox groupBox1;

private System.Windows.Forms.GroupBox groupBox2;

private System.Windows.Forms.StatusBar statusBar1;

private System.Windows.Forms.GroupBox groupBox4;

private bel label5;

private System.Windows.Forms.TextBox textBox5;

private System.Windows.Forms.TextBox textBox6;

private bel label6;

private System.Windows.Forms.Button button4;

private System.Windows.Forms.GroupBox groupBox3;

private System.Windows.Forms.RichTextBox richTextBox2;

private System.Windows.Forms.Button button5;

private Thread listenthread;//表示监听的线程

private string msg; //要发送的消息

private Socket socket1; //Socket类用于接收和发送信息

private IPEndPoint lep;

private System.Windows.Forms.GroupBox groupBox5; //请求连接的节点 ///

/// 必需的设计器变量。

///

private ponentModel.Container components = null;

public Form1()

{

//

// Windows 窗体设计器支持所必需的

//

InitializeComponent();

//

// TODO: 在 InitializeComponent 调用后添加任何构造函数代码

//

}

///

/// 清理所有正在使用的资源。

///

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

#region Windows 窗体设计器生成的代码

///

///

private void InitializeComponent()

相关文档
最新文档