文档库 最新最全的文档下载
当前位置:文档库 › 聊天室的设计与实现

聊天室的设计与实现

聊天室的设计与实现
聊天室的设计与实现

华北科技学院计算机系综合性实验

实验报告

课程名称网络编程

实验学期 2011 至 2012 学年第 1 学期学生所在系部计算机系

年级 09级专业班级计算机应用

学生姓名学号

任课教师黄江兰

实验成绩

计算机系制

《网络编程B 》课程综合性实验报告

开课实验室:五机房2011年11 月30

实验题目聊天室的设计

一、实验目的

1、掌握https://www.wendangku.net/doc/a813542733.html,内部控件的应用。

2、掌握https://www.wendangku.net/doc/a813542733.html,内部对象的应用。

3、Application对象的深入应用。

4、掌握数据库的建立、连接与数据的存取。

5、掌握动态网站开发的基本流程。

二、设备与环境

硬件:多媒体计算机

软件:Windows系列操作系统(含IIS5.0以上版本)、.Net运行环境及编译环境、Access2000、SQL Server 2000

三、实验内容及要求

1.实验要求

1、简单文字聊天室的需求分析。

聊天室的主要功能有:

1)用户登录;

2)浏览器不断地对文本或数据库进行刷新,读取;

3)实时更新在线用户;

4)能够公开聊天、私下聊天等等;

5)管理员对聊天室的管理。

在聊天室没有满员的情况下,普通用户能够登录的聊天室进行文本的聊天,能够方便的实现公共交谈、私聊等,网络管理员能够方便的浏览所有用户的信息,能够禁止某用户或者IP登录,把用户踢出聊天室等等。在程序中使用Application(“usercount”)来标记当前的用户数,在登录时用Session["upower"]来判断用户的权限,如果是普通用户通过验证后会进入聊天室主页,如果是管理员则会进入管理员管理管理页面。

2、系统的功能模块设计。

功能模块框图:

3.主要技术应用

(1)框架的应用

使用FrameSet 框架布局聊天室结构。所谓框架就是将网页画面分成几个窗框,同时取得多个URL 。

在FrameSet 框架技术中经常利用框架标记来定义分割窗口,只需或标记即可,页面所有框架标记放在一个HTML 文件中,这个文件只记录了该框架是如何被分割的,不会显示任何资料,所以不必放入标记。

需要注意的是,标记是框架设计标记,是双标记。首尾的标记之间的内容就是使用到的框架的HTML 主体部分。标记是用来划分窗口的,每一窗口由一个标记所标识,必须在范围中使用。

代码如下:

<body ></p><p></body >

聊天室

查看聊天记录

管理用户

退出聊天室

显示在线人数

登录验证

管理员

普通用户

显示在线用户

发言

(2)Session对象的应用

Session对象用于存储每个用户的专用信息。Session对象与Application对象不同,它只针对单一网页使用者,即各个连接的机器都有各自的Session对象,不同客户端无法互相存取。Session 对象中止于联机机器离线时,即当网页使用者关掉浏览器或超过设定Session变量的有效时间时,Session对象就会消失。

本次作业中用户进入聊天室的信息就是通过Session对象保存用户的登录名称和IP地址来实现

的,代码如下:

protected void Page_Load(object sender, EventArgs e)

{

Session["LoginName"] = txtusername.Text; if(Page.IsPostBack==false) {

Label1.Text = "匿名:";

Label2.Visible=false;

https://www.wendangku.net/doc/a813542733.html,bel3.Visible = true;

txtuserpwd.Visible = false;

Random Rd = new Random(); string Rds = "游客" +

Rd.Next(9).ToString() + Rd.Next(9).ToString() + Rd.Next(9).ToString() +

Rd.Next(9).ToString();

txtusername.Text = Rds;

Session["IP"] = https://www.wendangku.net/doc/a813542733.html,erHostAddress.ToString();

}

}

(3)JavaScript脚本的应用

在框架绑定页面时,通过Response对象的Redirect方法无法实现页面返回到登录页的功能,可通过JavaScript脚本来实现。

返回到登录页面是应用JavaScript脚本实现的。代码如下:

Resonse.Write(“”);

3.数据库的设计

该实验采用SQL server 2005数据库,其中主要用到了3个数据表,各数据表的数据字段及用途如表所示:

(1)数据表tb_Admin为管理信息表,包括管理员个人的管理信息,如表所示:

tb_Admin表结构

(2)数据表tb_matter为聊天记录表,如表所示:

tb_matter表结构

(3)数据表tb_user为用户登录表,如表所示:

tb_user表结构

4.系统的详细设计

用户登录模块

在用户登录模块的设计中,应用了2个数据表,分别为tb_user和tb_Admin;主要技术的应用是https://www.wendangku.net/doc/a813542733.html,内置对象中的Application对象的应用。

用户登录模块主要用于普通用户和管理员进入本程序。普通用户登录时,应用到的关键技术的详细说明。可附相关的关键程序代码。

普通用户可使用自己的名字进入聊天室,也可以使用系统提供给用户的自定义名字登录。但管理员登录聊天室有所不同,管理员必须通过输入正确的密码才能聊天室进行管理。普通用户登录的界

面如图所示:

当选择管理员登录时,可进入管理员登录页面,运行界面如图所示:

普通用户登录时,无需对页面进行任何操作,可直接点击“登录”按钮进入聊天室,

而该用户进入聊天室的同时,系统会通过变量Application[“Name”]和Application[“IP”]将该用户的信息(包括用户名、用户IP地址、进入的时间等)存储在数据表tb_user中。当用户离开聊天室时,系统则会自动删除该用户存储在数据表tb_user中的记录信息。

实现普通用户的登录的步骤如下:

(1)首先引用命名空间“using System.Data.SqlClient”,并创建公共类对象MCClass。

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

MCClass.cs

public DataSet ReturnDataSet(string sqlstr, string tbName)

{

SqlConnection con = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

con.Open();

SqlDataAdapter ada = new SqlDataAdapter(sqlstr, con);

DataSet ds = new DataSet();

ada.Fill(ds, tbName);

return ds;

}

public SqlDataReader reDr(string str)

{

SqlConnection conn = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

conn.Open();

SqlCommand com = new SqlCommand(str, conn);

https://www.wendangku.net/doc/a813542733.html,mandType = CommandType.Text;

SqlDataReader dr = com.ExecuteReader();

return dr;

}

}

(2)Login.aspx页的Page_Load加载事件过程,在此事件过程中指定用户登录的随机名称、变量(3)判断管理员登录的CheckBoxList控件”cblfAdmin”是否被选中,选中为管理员登录,反之则为普通用户。

(4)对进入聊天室的性别头像图片进行选择,以便区分用户的性别。

(5)管理员登录与普通用户登录的窗口在一个页面中。管理员登录时,只需将控件cblfAdmin选中即可。

(6)进入“登录”按钮的click单击事件下,编写代码。

public partial class Login : System.Web.UI.Page

{

MCClass mc = new MCClass();

protected void Page_Load(object sender, EventArgs e)

{

Session["LoginName"] = txtusername.Text;//应用Session对象保存登录的用户名

if(Page.IsPostBack==false)

{

Label1.Text = "匿名:";

Label2.Visible=false;

https://www.wendangku.net/doc/a813542733.html,bel3.Visible = true;

txtuserpwd.Visible = false;

Random Rd = new Random();//伪随机生成器,产生随机性统计要求的数字序列string Rds = "游客" + Rd.Next(9).ToString() + Rd.Next(9).ToString() + Rd.Next(9).ToString() + Rd.Next(9).ToString();

txtusername.Text = Rds;

Session["IP"] = https://www.wendangku.net/doc/a813542733.html,erHostAddress.ToString(); }

}

protected void Button1_Click(object sender, EventArgs e)

{

}

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)

{

if (cblIfAdmin.Items[0].Selected == true)

{

SqlConnection con = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

con.Open();

SqlCommand com = new SqlCommand("select count(*) from tb_Admin where Name='" + txtusername.Text + "' and pwd='" + txtuserpwd.Text + "'", con);

int count = Convert.ToInt32(com.ExecuteScalar());

if (count > 0)

{

Session["Name"] = txtusername.Text;

Session["PWD"] = txtuserpwd.Text;

Page.Response.Redirect("index1.aspx");

}

else

{

Response.Write("");

return;

}

}

else

{

if (DropDownList1.SelectedItem.Text == "boy")

{

mc.ExecCommand("insert into tb_user(name,ip,img)values('" +

txtusername.Text + "','" + https://www.wendangku.net/doc/a813542733.html,erHostAddress.ToString() + "','" + Image1.ImageUrl + "')");

Page.Response.Redirect("index.aspx");

}

else//如果用户选择的头像中性别为“女”,则执行以下语句

{

mc.ExecCommand("insert into tb_user(name,ip,img)values('" + txtusername.Text + "','" + https://www.wendangku.net/doc/a813542733.html,erHostAddress.ToString() + "','" + Image1.ImageUrl + "')");

Page.Response.Redirect("index.aspx");

}

}

}

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)

{

if (DropDownList1.SelectedItem.Text == "boy")

{

Image1.ImageUrl = "images/face/boy.gif";

}

else

{

Image1.ImageUrl = "images/face/girl.gif";

}

}

protected void cblIfAdmin_SelectedIndexChanged(object sender, EventArgs e)

{

if (cblIfAdmin.Items[0].Selected == true)//值为true为管理员登录

{

Label2.Visible = true;

Label1.Text = "管理员名称:";

Label2.Text = "管理员密码:";

txtuserpwd.Visible = true;

txtusername.Text = "mr";

txtusername.Enabled = false;

Label3.Visible = false;

DropDownList1.Visible = false;

Image1.Visible = false;

}

else//以下代码为普通用户登录

{

Label1.Text = "匿名:";

txtusername.Text = Session["LoginName"].ToString();

Label2.Visible = false;

txtusername.Enabled = true;

txtusername.Text = null;

txtuserpwd.Visible = false;

Label3.Visible = true;

DropDownList1.Visible = true;

Image1.Visible = true;

}

}

}

普通用户聊天室页面

在普通用户聊天室页面设计中,应用的数据表为tb_user和tb_matter;主要技术的应用是https://www.wendangku.net/doc/a813542733.html,中内置对象中的Session变量应用。

普通用户进入聊天室页面后主要实现基本的聊天功能,不提供任何管理权限。普通用户聊天

室页面的运行结果如图所示

上图中的聊天室用户名单列表,即页面left.aspx是通过数据表tb_user中数据绑定到DataList 控件(ID属性为dlName)实现的。

在显示用户名单列表时,主要通过Image和ListButton控件编辑到DataList模板中实现。

用户发言及退出页面的设计分4个小模块,分别为发言模块、是否对“所有人”发言模块、返回登录模块和安全退出模块。

发言模块的主要功能是通过单击“发送”按钮向数据表中插入聊天记录。

是否对所有人发言模块是通过对DropDownList控件“ddlIfName”的选择来实现的。

返回登录模块主要用于返回登录页面Login.aspx,使用户重新登录,是通过JavaScript脚本实现的。

安全退出模块,当用户单击“安全退出”按钮时,程序会弹出是否关闭浏览器的消息提示框,单

击提示框中的“确定”按钮,此时程序通过调用公共类方法ExecCommand,将进入聊天室时存储于数据表tb_user中的记录删除,同时关闭该浏览器。代码如下:

left.aspx.cs

public partial class left : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

SqlConnection con = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

con.Open();

SqlDataAdapter ada = new SqlDataAdapter("select * from tb_user", con);

DataSet ds = new DataSet();

ada.Fill(ds);

dlName.DataSource = ds;

dlName.DataKeyField = "name";

dlName.DataBind();

}

protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e) {

}

}

right.aspx.cs

public partial class right : System.Web.UI.Page

{

MCClass mc = new MCClass();

protected void Page_Load(object sender, EventArgs e)

{

int count;

SqlConnection con = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

con.Open();

if (Session["name"] != null)

{

count = 1;

}

else

{

SqlCommand com = new SqlCommand("select count(*) from tb_user where name= '" + Session["LoginName"] + "'", con);

count = Convert.ToInt32(com.ExecuteScalar());

}

if (Session["infoTime"] == null)

{

Session["infoTime"] = DateTime.Now;

}

string str = "select * from tb_matter where infoTime>'" + Session["infoTime"] + "'order by id asc ";

SqlDataReader dr = mc.reDr(str);

while (dr.Read())

{

this.TextBox1.Text += dr["matter"] + "(" + dr["infoTime"].ToString() + ")" + "\n";

}

}

}

Down.aspx.cs

public partial class down : System.Web.UI.Page

MCClass mc = new MCClass();

protected void Page_Load(object sender, EventArgs e)

{

if(Page.IsPostBack==false)

{

Label4.Text = Session["LoginName"].ToString();

SqlConnection con = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

con.Open();

SqlCommand com = new SqlCommand("select count(*) from tb_user where Name='" + Label4.Text + "'", con);

if (count > 0)

{

btnSend.Visible = true;

}

else

{

txtSpeak.Enabled = false;

btnSend.Enabled = false;

btnExit.Enabled = false;

}

SqlConnection mycon = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

mycon.Open();

SqlDataAdapter ada = new SqlDataAdapter("select * from tb_user", mycon);

DataSet ds = new DataSet();

ada.Fill(ds, "tb_user");

ddlName.DataSource = ds;

ddlName.DataTextField = "name";

ddlName.DataValueField = "name";

ddlName.DataBind();

mycon.Close();

}

}

protected void btnReturn_Click(object sender, EventArgs e)

{

mc.ExecCommand("delete from tb_user where name='" + Label4.Text + "'");

Response.Write("");

}

protected void ddlIfName_SelectedIndexChanged(object sender, EventArgs e)

{

if (ddlIfName.SelectedItem.Text == "游客")

{

ddlName.Visible = true;

}

else

{

ddlName.Visible = false;

}

}

protected void btnSend_Click(object sender, EventArgs e)

{

if (ddlIfName.SelectedIndex == 0)

{

SqlConnection con = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

con.Open();

SqlCommand com = new SqlCommand("select count(*) from tb_user where Name='" + Label4.Text + "'", con);

int count = Convert.ToInt32(com.ExecuteScalar());

if (count > 0)

{

mc.ExecCommand("insert into tb_matter (name,ip,matter) values('" + Label4.Text + "','" + Session["IP"] + "','" + Label4.Text + "说:" + txtSpeak.Text + "')");

txtSpeak.Text = null;

}

else

{

txtSpeak.Enabled = false;

btnSend.Enabled = false;

btnExit.Enabled = false;

Response.Write("

language=javascript>parent.window.close();");

}

}

else

{

SqlConnection con = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

con.Open();

SqlCommand com = new SqlCommand("select count(*) from tb_user where Name='" + Label4.Text + "'", con);

int count = Convert.ToInt32(com.ExecuteScalar());

if (count > 0)

{

mc.ExecCommand("insert into tb_matter (name,ip,matter,sts) values('" + Label4.Text + "','" + Session["IP"] + "','" + Label4.Text + "对" + Request["ddlName"] + "说:" + txtSpeak.Text + "','" + Request["ddlName"] + "')");

txtSpeak.Text = null;

}

else

{

txtSpeak.Enabled = false;

btnSend.Enabled = false;

btnExit.Enabled = false;

Response.Write("

language=javascript>parent.window.close();");

}

}

}

protected void btnExit_Click(object sender, EventArgs e)

{

mc.ExecCommand("delete from tb_user where name='" + Label4.Text + "'");

Response.Write("");

}

}

管理员聊天室页面

在管理员聊天室页面设计中,应用到的数据表有b_user和tb_matter;主要技术是应用GridView

数据表控件自带的删除功能删除数据表中记录和应用https://www.wendangku.net/doc/a813542733.html,内置对象中的Application对象将存储于数据表tb_user中的信息删除。

管理员聊天室页面与用户聊天室页面大致相同,唯一不同的是,管理员登录聊天室时为隐身状态,普通用户在名称列表中看不到管理员,但管理员的发言用户可以看到。此功能的实现是在登录窗口时,系统通过检索变量Session[“Name”]和Session[“PWD”]来验证管理员身份,登录成功则进入管理员聊天室页面,像普通用户进入一样,将数据信息插入数据表中。管理员聊天室页面的运行结果如图:

代码如下:

down1.aspx.cs

public partial class down : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (Page.IsPostBack == false)

{

SqlConnection con = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

con.Open();

SqlDataAdapter ada = new SqlDataAdapter("select * from tb_user", con);

DataSet ds = new DataSet();

ada.Fill(ds);

ddlDelName.DataSource = ds;

ddlDelName.DataTextField = "name";

ddlDelName.DataValueField = "name";

ddlDelName.DataBind();

con.Close();

}

SqlConnection mycon = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

mycon.Open();

SqlDataAdapter myada = new SqlDataAdapter("select * from tb_user", mycon);

DataSet myds = new DataSet();

myada.Fill(myds);

ddlName.DataSource = myds;

ddlName.DataTextField = "name";

ddlName.DataValueField = "name";

ddlName.DataBind();

mycon.Close();

}

protected void Button1_Click(object sender, EventArgs e)

{

if (ddlIfname.SelectedIndex == 0)

{

SqlConnection con = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\第18章代码

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

con.Open();

string SqlStr = "insert into tb_matter(name,ip,matter) values('" +

Session["LoginName"] + "','" + Session["IP"] + "','" + "OP说:" + txtSpeak.Text + "')";

SqlCommand com = new SqlCommand(SqlStr, con);

com.ExecuteNonQuery();

com.Dispose();

con.Close();

txtSpeak.Text = null;

Response.Redirect("down1.aspx");

}

else

{

SqlConnection con = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\第18章代码

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

con.Open();

string SqlStr = "insert into tb_matter(name,ip,matter) values('" +

Session["LoginName"] + "','" + Session["IP"] + "','" + "OP对" + Request["ddlName"] + "说:" + txtSpeak.Text + "')";

SqlCommand com = new SqlCommand(SqlStr, con);

com.ExecuteNonQuery();

com.Dispose();

con.Close();

txtSpeak.Text = null;

Response.Redirect("down1.aspx");

}

}

protected void Button1_Click1(object sender, EventArgs e)

{

Response.Write("");

}

protected void Button2_Click1(object sender, EventArgs e)

{

Response.Write(""); }

protected void btnDel_Click(object sender, EventArgs e)

{

if (ddlDelName.Text != "")

{

btnDel.Enabled = true;

SqlConnection con = new SqlConnection("server=(local);user id=sa;

pwd=;database=db_ManyChat");

con.Open();

SqlCommand com = new SqlCommand("delete from tb_user where name='" + ddlDelName.Text + "'", con);

SqlCommand com1 = new SqlCommand("insert into tb_matter(name,matter)values ('" + ddlDelName.Text + "','" + ddlDelName.Text + "被管理员踢出聊天室!" + "')", con); com1.ExecuteNonQuery();

com.ExecuteNonQuery();

Response.Redirect("down1.aspx");

}

else

{

btnDel.Enabled = false;

}

}

protected void btnInfo_Click(object sender, EventArgs e)

{

Response.Write("

language=javascript>window.open('InfoChatNote.aspx','','width=700,heigth=300') ");

}

protected void ddlIfname_SelectedIndexChanged(object sender, EventArgs e)

{

if (ddlIfname.SelectedItem.Text == "游客")

{

ddlName.Visible = true;

}

else

{

ddlName.Visible = false;

}

}

protected void ddlDelName_SelectedIndexChanged(object sender, EventArgs e)

{

SqlConnection con = new SqlConnection("server=(local);user id=sa;

pwd=;database=db_ManyChat");

con.Open();

SqlDataAdapter ada = new SqlDataAdapter("select * from tb_user where name='" + ddlDelName.SelectedValue.ToString() + "'", con);

DataSet ds = new DataSet();

ada.Fill(ds);

ddlIp.DataSource = ds;

ddlIp.DataTextField = "ip";

ddlIp.DataValueField = "name";

ddlIp.DataBind();

}

}

InfoChatNote.aspx.cs

public partial class InfoChatNote : System.Web.UI.Page

{

MCClass mc = new MCClass();

protected void Page_Load(object sender, EventArgs e)

{

DataSet ds = null;

ds = mc.ReturnDataSet("select * from tb_matter order by id desc", "tb_matter"); gvInfoChatNote.DataSource = ds;

gvInfoChatNote.DataKeyNames = new string[] { "id"};

gvInfoChatNote.DataBind();

}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) {

gvInfoChatNote.PageIndex = e.NewPageIndex;

gvInfoChatNote.DataBind();

}

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

{ SqlConnection con = new SqlConnection("Data

Source=.\\SQLEXPRESS;AttachDbFilename=H:\\聊天室

\\App_Data\\db_ManyChat_Data.MDF;Integrated Security=True;User Instance=True");

con.Open();

SqlCommand com = new SqlCommand("delete from tb_matter where id='" + gvInfoChatNote.DataKeys[e.RowIndex].Value + "'", con);

com.ExecuteNonQuery();

Page_Load(sender, e);

}

}

总结

课程设计的过程是一个学习与研究的过程,而且,我深刻地认识到如果在实践中学习与研究,所掌握的知识就更为扎实。我使用了https://www.wendangku.net/doc/a813542733.html,为实现平台,SQL Server 2005为后台数据库,采用https://www.wendangku.net/doc/a813542733.html,技术进行数据库的连接,虽然系统已基本完成,但我对于https://www.wendangku.net/doc/a813542733.html,的核心技术和高级编

程还很陌生,不能熟练运用,对于C#语言也不那么熟悉,这是我以后需解决的问题。还好,这一次综合实验给了我一个台阶,也给了我依次机会涉足网页制作这一方向。

这次的课程设计中,让我深深地体会到进行软件开发不是一件简单的事情,在实际开发中,熟悉了许多开发工具的使用,对visual https://www.wendangku.net/doc/a813542733.html, 2003 的开发环境有了更深刻的认识,对SQL Server 数据库也有了更加深入的了解,在这个过程中对使用得开发语言C#有了更好的学习。

总之,我以后要多钻研软件开发,以更加饱满的热情投入到本专业的学习中去,一丝不苟做好每一件事,争取更多的收获。

教师评价

评定项目 A B C D 评定项目 A B C D 算法正确界面美观,布局合理

程序结构合理操作熟练

语法、语义正

解析完整

实验结果正确文字流畅

报告规范题解正确

其他:

评价教师签名:

年月日

JAVA代码编写一简单网络聊天程序

要求:聊天室服务器、聊天室客户端;客户端之间可以聊天。 因为我是初级选手,想借此程序分析学习java,所以代码最好多一点注释... 分数有限,望大家不吝赐教!!问题补充: 需要图形用户界面哦,最好用swing组件 服务器端:采用多线程,可以向客户广播:当前聊天室人数,客户名称列表,客户进入离开提示; 客户端:可以设定昵称,性别,客户间可以私聊 服务器端: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.wendangku.net/doc/a813542733.html,.*; public class Server extends JFrame implements ActionListener{ JPanel contentPane; JLabel jLabel2 = new JLabel(); JTextField jTextField2 = new JTextField("4700"); JButton jButton1 = new JButton(); JLabel jLabel3 = new JLabel(); JTextField jTextField3 = new JTextField(); JButton jButton2 = new JButton(); JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); ServerSocket server = null; Socket socket = null;BufferedReader instr =null;PrintWriter os=null ; //Construct the frame public Server() { jbInit(); } class MyThread extends Thread{//该线程负责接受数据 public void run(){ try{ while(true){ this.sleep(100); instr= new BufferedReader(new InputStreamReader(socket.getInputStream())); if(instr.ready()){ //检查是否有数据 jTextArea1.append("客户端: "+instr.readLine()+"\n"); } } }catch(Exception ex){} }

C+++网络聊天室设计报告和源程序

目录 1.需求分析 (2) 2.相关知识............................................... - 3 -2.1W INSOCK介绍 (3) 2.2MFC类CA SYNCSOCKET和CS OCKET (3) 2.3利用CS OCKET进行有连接的通信 (4) 3.详细设计................................... 错误!未定义书签。 3.1客户端的实现 (4) 3.2服务端的实现 (8) 4.程序运行结果.......................................... - 13 -4.1服务器端 .. (13) 4.2客户端 (13) 5.参考文献 ................................................................................................................... 错误!未定义书签。

1.需求分析 当前是数字信息时代,网络时代,任何一种编辑工具都不能忽视在网络上的应用,并且随着Internet 的普及和宽带技术的成熟,越来越多的用户进入网络世界中享用浏览新闻、查询信息、发送邮件、在线观看电影等服务,享受网络带来的便利和办公的高效,与此同时一个新型的Web应用程序为网民之间提供了一个实时通信的功能和场所,这就是聊天室。 在网络早期就开始盛行,不论是BBS,IRC 都有类似网上聊天室的机制。聊天室为网友提供了实时性对话的渠道,是网络上极为流行的一项服务。 聊天室适用于网上会议或闲聊的一些场合。聊天室为网友提供了较好的交友环境,网友之间相互以文字交谈,在形式上有点类似笔友的性质,却大大节省了书信往返的时间,这也是网上交友之所以如此热门的原因。 聊天室的设计目标 本课题是建立聊天通信模型,设计一个聊天室软件,包括服务器端和客户端,主要功能为: 服务器端功能: 1、初始化socket, 创建服务器端。 2、维护一个链表,保存所有用户的IP地址、端口信息。 3、接受用户传送来的聊天信息,然后向链表中的所用用户转发。 4、接受用户传送来的连接判断命令,并向用户发出响应命令。 客户端功能: 客户端界面上的两个文本框,一个用于显示接受的聊天信息,一个用来接受用户输入的聊天信息。当按下“发送”按钮时将信息发送给服务器。 通过本课题的毕业设计,可以比较深入的了解和掌握WINSOCK控件基本属性、方法和事件,理解网络聊天通信的概念,输控制协议(TCP)进行数据交流,初步掌握网络聊天通信程序的设计方法。并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。

毕业设计-聊天室的设计与实现

编号: 毕业论文 题目:聊天室的设计与实现 院(系): 专业:计算机及应用 学生姓名:唐靖琳 学号: 030111301444 指导教师:李志远 职称:教授 题目类型:理论研究实验研究工程设计工程技术研究软件开发 2012年4月15日

随着Internet的普及,很多人已经不满足于仅仅上网冲浪,而希望能参与其中的开发与研究。怎样做好网页便是人们所渴望的事情。想做好一个网页就要选好工具,我的课题是聊天室的设计与制作。因此,我这里选择的开发软件是Macromedia Dreamweaver 8。Macromedia Dreamweaver 8目前作为最主流的ASP开发工具,它可以将前台界面设计和后天程序设计充分结合,包括asp等。而微软的asp和目前推广的https://www.wendangku.net/doc/a813542733.html,,是广大网页后台设计师的首选,其应在IIS服务器环境中运行并通过调用ACCESS数据库来实现。 在线聊天室是一种十分普及的动态交互系统,是一种比较直观的且容易接受的交流方式,特别对于刚刚接触的新网民,在线聊天室相对于其他网络交流方式来说有很多不可比拟的优势,比如操作简单,界面简单,信息显示十分直观,十分适合新手;信息的及时传递无延迟,用户可以十分自如地和他人交流而无须等待。这些优点也是聊天室出现这么长时间以来的仍然被广泛使用的原因。至今在线聊天室仍是被很多网站作为吸引网民的利器. 本人制作的是在线聊天室的功能实现,实现用户的登陆和注册,用户在线聊天功能,私聊功能及管理员管理用户功能。聊天的界面有框架构成的。 建设此聊天室,主要目的是为了能够和相同爱好的朋友提供一个实时交流的平台,而不会因为距离而疏远了。 关键词:聊天室;ASP IIS服务器;ACCESS数据库;Macromedia Dreamweaver 8

计算机网络TCP聊天室实验报告

计算机网络原理 实验报告书 姓名:XXX 班级:XXXXXX 学号:XXXXXXXXXX XXXXXXXXXXXX 二0一一年五月

socket编程 一、实验目的 本次实验的目的是通过利用Socket编写简单的客户/服务器程序,了解TCP/IP网络的基本通信原理和编程方法,初步掌握TCP/IP网络的传输层上的编程接口(Windows Sockets API),学会利用这些接口来编写简单的网络通信软件。 二、实验内容 利用socket编写简单的客户/服务器程序,比如聊天室、文件传输等。 三、实验步骤 思路分析 ?将服务器与客户端分两部分实现,采用多线程实现多个客户端与服务器端连接 ?客户端建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接 收数据就可以了。 ?服务器端通过创建一个Socket的Arraylist数组,与指定的本地端口绑定,就 可以在端口进行侦听。如果有客户端连接请求,则在数组中选择一个空 Socket,将客户端地址赋给这个Socket。然后登录成功的客户就可以在服务 器上聊天了。 代码实现 p ackage TCP_chat_room.gui; i mport java.io.IOException; p ublic class ClientApp { public static void main(String[] args) { /** * javax.swing.UIManager$LookAndFeelInfo[Metal javax.swing.plaf.metal.MetalLookAndFeel]

网络聊天室系统设计与实现

科研训练 网络聊天室系统设计与实现Design and implementation of network chat room system 学生姓名XXX 专业软件工程 学号1305XXXXX 指导教师李XX 祝XX 学院计算机科学技术学院 二〇一六年六月

目录

一、引言 随着网络的大幅度普及,以及网络技术快速发展,人们通过网络进行交流的方式发生着巨大的变化,人们不再拘泥于移动电话的通话模式,越来越多的人通过网络聊天工具进行交流,网络聊天室便是非常典型的聊天工具之一。聊天室系统的即时交流方式满足了网络中人们同时与多人进行聊天交流的需要,使得较多的人在同一个聊天页面进行交流变得方便,简单。 本设计所完成的网络聊天室具有常用聊天室的所有功能,包括使用账号登录聊天室、注册账号、显示在线用户列表、显示系统消息、两人之间进行私密聊天、消息提醒、发送表情、修改发送文字颜色;同时,为了管理聊天室中的用户使用语言的文明,赋予管理员踢出使用不文明语言的用户功能,显示全部聊天信息。该系统采用B/S(浏览器/服务器)结构进行开发,参考网络中正在使用的大型聊天室的架构、分析聊天室可实现功能,结合本次设计的相关要求,进行开发设计并写出需求分析说明书。 该系统具体开发环境:使用专业版作为服务器运行平台,服务器开发语言使用Java语言,前台使用Jsp技术、JavaScript、Jquery语言,系统框架使用 Struts2+Hibernate+Spring框架,后台数据库使用MySql数据库。 二、需求分析 该系统采用B/S模式设计,开发目的主要是提供一个基于网络的安全文明的供多人聊天社交平台。 系统运行环境需求 该系统是在windows 专业版操作系统下,搭建的运行平台,使用myEclipse作为开发工具,mySql作为数据库,Java语言作为系统后台开发语言。 JSP技术作为前台开发语言,其中使用JavaScript以及Jquery作为脚本语言。工程框架使用Struts+Spring+Hibernate框架。 (1)服务器配置: (2)客户端要求配置: 谷歌浏览器、狐火浏览器以及IE浏览器以上版本。 模块功能分析 (一)用户注册登录模块 新用户在使用该聊天室系统时,必须先进行注册新用户操作,后台将注册信息添加到数据库中,用于胡勇登录验证;在注册成功之后再进行登录; 当用户名与密码匹配成功,即可进入聊天室系统。 (二)在线用户显示模块 当用户登录进入系统后,该页面实现在线用户的统计,并将在线用户依次显示出来。如果当前用户属于管理员角色,则在普通用户角色的右边显示“踢下线”链接,如果当前用户属于普通用户角色,则正常显示在线用户名。 (三)用户交流聊天模块 该模块主要负责发送信息内容,选择聊天对象;除此之外,可以修改聊天内容的字体颜色以及发送的表情。发言的颜色和发言的表情通过下拉式组合框实现。发言内容书写完毕后。通过点击“发送”按钮,发送聊天内容。 (四)聊天信息显示模块 当用户选择聊天对象并发送聊天内容后,显示出当前发送的内容以及之前的历史聊天内容,聊天的内容只有对话的两人可见,其他人不可见。当用户退出系统后,再次登录进入聊天室时,两人的对话记录依然存在。

基于Linux网络聊天室的设计3

基于Linux网络聊天室的设计 摘要本课程设计实现了在linux下简单的网络聊天室。在Linux下编写并调试服务器端程序和客户端程序,实现了客户、服务器之间的连接和通信。可以在单机上开辟两个窗口分别运行客户、服务器端的程序,或者将两台主机连接分别作为客户和服务器的方式。本设计使用网络套接字socket和多线程在网络中的应用,并基于linux下的vi编辑器。本方案经gcc调试器调试成功,可以在单机网络聊天中使用。 关键词网络聊天室;linux ;socket ;vi Abstract Design and Implementation of the course in under linux simple network chat rooms. Prepared in the Linux and debugging server-side processes and client to achieve the client, server and communications link between. Can open up two windows on the stand-alone operation, respectively, customers, server-side procedures, or to connect two hosts, respectively, as the way the client and server. The design of the network socket using the socket and multi-threaded applications in the network, and under linux based vi editor. The program by the success of gcc debug debugger, you can chat in the use of stand-alone network. Key words Network Chat Rooms; Linux; Socket; Vi

网络聊天室项目可行性实施报告

网络聊天室项目 1.1编写目的 计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,更是深刻的影响了人们的联系和交流方式,使得人们可以自傲远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。网上聊天系统作为一种方便人们之间联系的使用系统便应运而生。网上聊天系统是人们进行交流和联系提供的一个平台。通过提供完善的网上聊天系统的管理,可以达到增进人与人之间的交流和沟通。 在网络世界中,聊天室(Chat Room)是一个最常见的服务,它最早起源于BBS站点,聊天室作为一个在漫漫长夜打发消遣时间的最佳软件,除了能够用于聊天消遣时间以外,还拥有语音聊天、视频聊天、共享图片、文件等功能。现在随着网络的发展,聊天室发展的速度已经非常迅速了,现在的聊天室技术,都已经运用到了“网络会议”上,现在有很多的会议在网上视频聊天会议[9]。 该网络聊天室项目可行性研究报告是对项目课题的全面通盘考虑,是项目分析员进行进一步工作的前提,是软件开发人员正确成功的开发项目的前提与基础.写软件项目可行性研究报告可以使软件开发团体尽可能早的估计研制课题的可行性,可以在定义阶段较早的认识到系统方案的缺陷,就可以少花时间和精力,也可以省成资金,并且避免了许多专业方面的困难.所以该软件项目可行性研究报告在整个开发过程中是非常重要的. 本报告的预期读者为项目管理人,教师,软件用户学生,软件开发工程师等。 1.2 项目概述 在Internet上,qq,MSN,飞信等网上软件,极大程度方便了各地友人之间的联系,也使世界一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发信息。现在,企业,机关,学校都纷纷建立起自己的局域网。在局域网里,虽然可以通过文件共享的方式进行通讯,但单单使用这种方式,是不方便的。首先在局域网里的网上邻居,只能看到机器名,不清楚对方是谁,也不知道对方机器有什么资源可以共享,而且当局域网机器很多时,这种方式更加麻烦。 在市面上,聊天室的应用软件出现得比较早,比如说,Microsoft Chat,一个在界面及功能方面都已经非常完善的“聊天室”的应用软件,它是一套独立于浏览器之外的,即与浏览器无关的,需要下载客户端安装使用的套装软件,在使

Windows C语言构建网络聊天室

Windows C语言构建网络聊天室 利用C语言编写Windows应用程序有两种方式:一种是Windows C编程方式,另一种是Visual C++编程方式。在一般情况下,Visual C++编程方式编写的程序源代码量小、开发时的工作量小、工作难度也较小,但编译后的代码量较大,运行速度略低;而Windows C编程方式编写的程序源代码量虽然较大,但可执行代码效率高。随着技术的进步,Visual C++编程方式已被广泛采用,但象网络编程等一些对速度要求高、对硬件操作较多的程序,大多数还是用Windows C编程方式开发的。另外,学习Windows C 程序设计,还有助于更深入地了解Windows的内幕和Windows API。 基本的网络编程都是建立在Winsock基础上的。Winsock是90年代初,为了方便网络编程,由Microsoft联合了其他几家公司共同制定的一套WINDOWS下的网络编程接口,它是通过C语言的动态链接库方式提供给用户及软件开发者的,主要由winsock.h头文件和动态链接库winsock.dll组成,目前有两个版本:Winsock1.1和Winsock2.0。 作为网络编程接口,Winsock屏蔽了网络底层的复杂的协议和数据结构,使得编程人员对网络的操作变得非常简单,因此,在Win32平台上,访问众多的基层网络协议,Winsock是首选接口。 用Winsock构建一个网络聊天室,有两种基本的方式:数据报方式和流方式。 一、面向无连接的数据报方式 数据报方式又称无连接方式,对应的是UDP(User Datagram Protocol)协议。这种方式不提供数据无错保证,数据可能丢失或重复并且接收顺序混乱,后发出的报文可能会先收到,并且报文的长度是有限制的;不过,由于取消了重发校验机制,能够达到较高的通信速率,可以用于对数据可靠性要求不高的通信,如实时的语音、图像传送和广播消息等。 和C语言一样,函数是Windows C编程的最基本的单位。不过,Windows C主要使用API函数,而网络编程则主要使用Winsock提供的API函数。数据方式构建网络聊天室主要使用了以下几个函数:1.WSAStartup():初始化。 【函数原型】 int PASCAL FAR WSAStartup(WORD wV ersionRequired, LPWSADATA lpWSAData); 【使用说明】 每一个使用winsock的应用程序,都必须进行WSAStart函数调用,并且只有在调用成功之后才能使用其它的winsock网络操作函数。 返回值:调用成功返回0;否则,返回出错信息。 WversionRequired<输入>:表示欲使用的Winsock版本,这是一个WORD类型的整数,它的高位字节定义的是次版本号,低位字节定义的是主版本号。 LpWSAData<输出>:是一个指向WSADATA资料的指针。这个资料我们一般不使用。2.Socket():创建一个Socket。 【函数原型】 SOCKET socket(int af,int type,int proctocol); 【使用说明】 Winsock网络通信的第一步通常就是调用这个函数。所有的通信在建立之前都有要创建一个 Socket。该函数的功能与文件操作中的fopen()类似,返回值是由Winsock定义的一种数据类型 SOCKET,它实际是一个整型数据,是Socket创建成功时,Windows分配给程序的Socket编号,后面调用传输函数时,可以把它像文件指针样引用。如果Socket建立失败,返回值 WIV ALID_SOCKET。 Af<输入>:指address family(地址族),一般都填AF_INET,表示是在Internet上的Socket; Type<输入>::是Socket的类型,当采用流连接方式时,用SOCK_STREAM;采用数据报文方式时,用SOCK_DGRAM。

聊天室设计报告

网 络 聊 天 系 统 设 计 报 告 组长:靳子豪 组员:凯强、许玉军、王明明 完成时间:2015年11月3日

一、可行性研究报告 可行性研究报告(ISO标准) 编者说明: 在立项时,应该对项目进行综合分析,探讨项目的经济、社会、技术可行性,从而为决策提供基础。该模板为ISO标准文档模板,其不仅适用于软件项目,对于其它的系统项目也适用。 1.引言 1.1 编写目的 该聊天室项目可行性研究报告是对项目课题的全面考虑,是项目分析员对下一步工作进行的前提,是软件开发人员正确成功开发项目的前提与基础。写可行性研究报告可以使软件开发团体尽可能早的估计研究课题的可行性,较早的认识到系统方案的缺陷,可以少花时间和精力,也可减少成本资金,避免专业性的问题。 1.2 背景 a. 待开发系统的名称:信息交流系统 b 用户:大众 c. 它基于web小浏览器的程序系统的设计与开发, 服务平台:appserv-win 开发语言:PHP 数据库:MY SQL 1.3 定义 技术可行性:分析功能,性能以及限制条件,能否是一个技术上可实现的系统 经济可行性:估计开发费用已及最终从开发成功的系统所获得的收入或利益,衡量比较支出的费用和收到的利益 1.4 参考资料 《软件工程导论》(第6版)清华大学海藩牟永敏编著 可行性研究的前提 2.1 要求 a、聊天室功能 用户的聊天功能,包括数据输入、修改、删除,并要达到界面美观又好、使用方便 b、软件的性能 开发该软件应具有的基本要求与功能是实现用户信息数据包括与用户有关的数据 的管理与操作处理,基于MY SQL的数据库的数据管理使该软件有更优异的性能,软件的基本数据流动为用户数据的输入,用户信息及数据的输出。 c、输出 用户基本信息和聊天容 d、输入 用户根据自身需要,发起聊天 e、安全方面的要求 设置管理员 2.2 目标 该软件的设计目标必须尽量达到人力与设备费用的节省,软件的整个设计过程必须通过生产能力的提高、人员工作效率的提高等等使软件开发成本最小化。 2.3 条件、假定和限制 a、本聊天室建议使用寿命为5-10年 b、法律方面的限制:(1)、严禁危害国家信息安全(2)、严禁损害国家荣誉和利益(3)、严禁传播不良信息(5)、严禁抄袭 2.4 进行可行性研究的方法 成本效益分析、对估算问题的看法、软件的作用围、软件的成本估算、速度安排

java编写的简单局域网聊天室(适合初学者).

import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.Panel; import java.awt.Point; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.FileWriter; import java.io.IOException; import https://www.wendangku.net/doc/a813542733.html,.DatagramPacket; import https://www.wendangku.net/doc/a813542733.html,.DatagramSocket; import https://www.wendangku.net/doc/a813542733.html,.InetAddress; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class GUI_Chat extends Frame { private static final long serialVersionUID = 1L; private TextArea viewTextArea = new TextArea(20, 1; private TextArea sendTextArea = new TextArea(; private TextField ipTextField = new TextField(20; private Button sendButton = new Button(" 发送" ; private Button clearButton = new Button(" 清屏" ; private Button logButton = new Button(" 记录" ; private Button shakeButton = new Button(" 震动" ; private Panel panel = new Panel(; private DatagramSocket socket ;

JAVA聊天室系统的设计与实现

目录 第1章绪论- 1 - 1.1论文背景及课题来源 (1) 1.2本课题在国内外的发展状况 (1) 1.3应解决的问题及系统开发意义 (1) 第2章开发工具及相关技术介绍........................................................................................................... - 2 - 2.1J A V A与S OCKET简介 .. (2) 2.2JB UILDER5介绍 (3) 2.3C/S模型介绍 (3) 2.4用J A V A实现S OCKET模型 (4) 2.5J A V A中的线程模型简介 (5) 2.6SQL SERVER2000简介 (5) 第3章系统需求分析............................................................................................................................... - 6 - 3.1系统任务描述. (6) 3.2系统功能分析 (6) 3.2.1 系统的功能需求....................................................................................................................... - 6 - 3.2.2系统数据流图............................................................................................................................ - 7 - 3.2.3系统数据分析............................................................................................................................ - 8 - 3.3系统可行性分析 (9) 第4章系统设计 .................................................................................................................................... - 11 - 4.1系统总体结构设计 (11) 4.2数据库设计 (12) 4.3系统功能模块详细设计 (13) 第5章编码与实现 ................................................................................................................................ - 16 - 5.1系统主要模块代码 (16) 5.1.1启动、停止服务器.................................................................................................................. - 16 - 5.1.2客户端连接服务器.................................................................................................................. - 17 -

网络课程设计实验报告--QQ聊天实现

计算机网络课程设计报告 设计选题网络聊天室 姓名马继鸣 学号 0909090630 完成时间 2012-1-12 一、需求分析

聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客户机/服务器架构模式。通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能。用多线程可完成多点对多点的聊天。 主要有两个应用程序,分别为服务器程序和客户端程序。服务器应用程序主要用于消息转发,以及向所有用户发送系统消息等;客户端应用程序主要用于客户聊天记录的显示和信息输入。采用Client/Server(C/S)体系结构,即客户机/服务器体系结构。聊天服务器专门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务器。该聊天系统实现群聊,用户登陆,退出聊天系统等功能。 二. 设计 1.设计思想: 课程设计中利用JAVA实现基于C/S模式的聊天程序。聊天室共分为服 务器端和客户端两部分,服务器端程序主要负责侦听客户发来的消息,客 户端登录到服务器端才可以实现正常的聊天功能。

2.功能设计 (1)服务器端的主要功能如下。 在特定端口上进行侦听,等待客户端连接。用户可以配置服务端的侦听端口,默认端口为10000. 当停止服务时,断开所有用户连接。 (2)客户端的主要功能如下。 连接到已经开启聊天服务的服务端。 当服务器端开启的话,用户可以随时登录与注销。

用户可以向所有人发送消息。 3.详细设计 聊天室服务器端设计 聊天室服务器中主要的功能文件的功能如下: MyButLis.java 主要用于添加事件侦听和动作处理,具体是服务器按钮中的“终止”“发送”的处理。 public class MyButLis implements ActionListener private MyServe server; private JTextField filed1; public void actionPerformed(ActionEvent e) MyChatSet.java 服务器的线程队列,运行的方法,新增一个用户,则增加一个线程,并可以返回应答消息,给其余用户发送上下线信息,发送聊天信息(群聊私聊虽然已写,但是不知为何没有实现),发送用户列表。关键在于除了线程之外,还定义了传输数据时的协议内容,如何分辨不同的信息,如聊天信息,登陆信息,上下线信息,并把信息完整准确的传递。 public static ArrayList servers=new ArrayList();//线程队列 public static void addThread(MyserThread th) //增加一个服务器线程对象 public static void sendReMess(String type,String state,String s,MyserThread myth)//返回应答信息 public static void SendOSMess(String type,String user)//其他用户上下线信息 public static void SendChatMess(String type,String sender,String reciver,String Mess)//聊天信息 public static void SendList//用户列表 MyCheckTool.java 保存用户的登陆信息,在其中建立一个码表,并且可以判断登陆信息是否合法。 //建立码表,用以保存用户信息 private static Map maps=new HashMap(); public static boolean CheckUser(MyUserInfo user)// 验证用户名

Linux下的Socket网络编程:一个简易聊天室的实现-徐慧军

Linux下的Socket网络编程:一个简易聊天室的实现-徐慧军

高级程序设计与应用实践 报告 一个简易聊天室的实现 姓名:徐慧军 学号:2121134 专业:电子与通信工程 学院:信息科学与技术学院 任课教师:廖晓飞 2013年05月02日

Linux下的Socket网络编程: ——一个简易聊天室的实现一、socket介绍 socket接口是TCP/IP网络的API,socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP 网络编程,必须理解socket接口。 socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix 系统的输入和输出的话,就很容易了解socket了。网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符。socket也具有一个类似于打开文件的函数调用socket(),该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过该socket实现的。常用的socket类型有两种:流式socket (SOCK_STREAM)和数据报式socket(SOCK_DGRAM)。流式是一种面向连接的socket,针对于面向连接的TCP服务应用;数据报式socket是一种无连接的socket,对应于无连接的UDP服务应用。 二、Socket创建 socket函数原型为: #include #include int socket(int domain, int type, int protocol); 功能:调用成功,返回socket文件描述符;失败,返回-1,并设置errno 参数说明: domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP 协议族; type参数指定socket的类型: SOCK_STREAM 提供有序、可靠、双向及基于连接的字节流

关于网络聊天室的开发报告报告

J a v a P r o g r a m m i n g 课程设计报告 设计题目:简单的网络聊天程序 系别:江淮学院 专业:计算机技术与科学 班级:计算机3061 姓名:周剑 学号:3062101103 起止日期:2008年12月29日~2009年1月4日指导教师:张永军、周泓、高尚兵、刘虎

课程设计中文摘要 随着大众化、小型化趋势的加剧,网络聊天在当今已经不算新鲜事物,聊天室可以更好的方便大家交流,请教或探讨问题,同时也能开阔视野。但大多数网络聊天都需要借助位于Internet的服务器,这就给那些具有大规模内部网络的用户造成了不便,出于安全等考虑,通常这些内部网络不能直接连接到Internet。我设计的聊天室,提供了类似于常见聊天室的功能,同时可以在局域网内部使用,只需稍加改进,便可以应用于架设企业内部的聊天室,方便员工之间的沟通。 本聊天室系统,主要利用DELPHI用于底层网络通信Socket组件,使用了多线程技术。 关键字:聊天,功能,socket

Foreign language curriculum design Abstract With the popularization of small and medium-sized trend intensifies, the network has been in today's chat is not new things, chat rooms can facilitate better communication, consult or to study the issue, but also to broaden our horizons. But most networks need to chat with Internet server is located, which for those with large-scale internal network users the inconvenience caused, for safety considerations, these internal network usually can not directly connect to the Internet. I designed the chat rooms, provides a similar function of common chat room, as well as local area network for internal use, just a little improvement, it can be applied to set up enterprises within the chat rooms to facilitate communication between employees. The chat room system, mainly for the use of DELPHI bottom Socket network communication components, the use of multi-threading technology. Keywords: chat, function, socket

网络编程_基于TCP的简易聊天室_实验报告

网络编程 课程设计说明书 题目名称:基于TCP/IP的网络文字聊天程序设计专业:网络工程

班级: 1201班 学号: 1220140105 姓名:蒋星 指导老师:利平 完成日期: 2014年12月13日

目录 一、实验基本信息概要3 1. 题目要求 3 2. 题目容3 3. 开发环境 3 二、流程图4 三、系统简介5 1.界面5 2. 软件功能 5 3. 系统设计 9 4. 优点与缺点9 四、系统详细设计11 1. ChatServer类11 2. ChatClient 类13 3. SocketException类15 5. 命令协议 15 6. 消息格式 16 五、系统测试16 1. 服务器使用错误16 2. 客户端使用错误17 3. 启动服务器17 4. 启动客户端17 5. 关闭客户端17 6. 启动服务器错误提示18 7. 公开聊天 18 8. 私聊 18 9. 错误的私聊19 10. 更名20 11. 帮助20 12. 非法指令20 13. 非法的指令参数20 14. 连接服务器失败21 六、心得体会21 七、完整代码21 Charserverd.cpp 服务器main函数文件 21 ChatServer.h 服务器类头文件 22 ChatServer.cpp 服务器类 23 ClientInfo.h 客户信息类 33 Charclientd.cpp 客户端main函数 34 ChatClient.h 客户端头文件34 ChatClient.cpp 客户端类 35 InitSock.cpp 初始化WINSOCK类41

SockException.h 异常类41八、[参考文献] 42

聊天室设计报告

聊天室设计报告

————————————————————————————————作者:————————————————————————————————日期: ?

网 络 聊 天 系 统 设 计 报 告 组长:靳子豪 组员:冯凯强、许玉军、王明明

完成时间:2015年11月3日 一、可行性研究报告 可行性研究报告(ISO标准) 编者说明: 在立项时,应该对项目进行综合分析,探讨项目的经济、社会、技术可行性,从而为决策提供基础。该模板为ISO标准文档模板,其不仅适用于软件项目,对于其它的系统项目也适用。 1.引言 1.1 编写目的 该聊天室项目可行性研究报告是对项目课题的全面考虑,是项目分析员对下一步工作进行的前提,是软件开发人员正确成功开发项目的前提与基础。写可行性研究报告可以使软件开发团体尽可能早的估计研究课题的可行性,较早的认识到系统方案的缺陷,可以少花时间和精力,也可减少成本资金,避免专业性的问题。 1.2背景 a. 待开发系统的名称:信息交流系统 b 用户:大众 c.它基于web小浏览器的程序系统的设计与开发, 服务平台:appserv-win 开发语言:PHP 数据库:MY SQL 1.3定义 技术可行性:分析功能,性能以及限制条件,能否是一个技术上可实现的系统经济可行性:估计开发费用已及最终从开发成功的系统所获得的收入或利益,衡量比较支出的费用和收到的利益 1.4 参考资料 《软件工程导论》(第6版)清华大学出版社张海藩牟永敏编著 可行性研究的前提 2.1 要求 a、聊天室功能 用户的聊天功能,包括数据输入、修改、删除,并要达到界面美观又好、 使用方便 b、软件的性能 开发该软件应具有的基本要求与功能是实现用户信息数据包括与用户有关 的数据的管理与操作处理,基于MY SQL的数据库的数据管理使该软件有 更优异的性能,软件的基本数据流动为用户数据的输入,用户信息及数据的 输出。 c、输出 用户基本信息和聊天内容 d、输入 用户根据自身需要,发起聊天 e、安全保密方面的要求 设置管理员 2.2 目标

相关文档
相关文档 最新文档