版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机网络课程设计报告题目:网络聊天程序的设计与实现
姓名:申超明学号:0705010313班级:计算机3班指导老师:文宏湖南科技大学计算机科学与工程学院2010年9月
一:实验名称网络聊天程序的设计与实现二:实验目的 了解Socket通信的原理,并通过程序实现通信的过程。三:实验要求熟悉Socket程序通信过程,熟悉在通信过程中流之间的转换。程序中熟悉灵活运用线程执行相关操作。四:实验原理Socket通信的原理还是比较简单的,它大致分为以下几个步骤。服务器端的步骤如下:建立服务器端的Socket,开始侦听整个网络中的连接请求。当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接。当完成通信后,服务器关闭与客户端的Socket连接。客户端的步骤如下:建立客户端的Socket,确定要连接的服务器的主机名和端口。发送连接请求到服务器,并等待服务器的回馈信息。连接成功后,与服务器进行数据的交互。数据处理完毕后,关闭自身的Socket连接。
五:程序截图:图1-服务器端启动服务器 图2-客户端连接数据库图3-客户端发送消息图4-服务器段接收客户端发送过来的消息六:程序代码:Qserver.csusingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Threading;namespaceWindowsApplication2{publicpartialclassqserver:Form{publicqserver(){InitializeComponent();}privatestringipv4;privatevoidForm1_Load(objectsender,EventArgse){IPAddress[]ip=Dns.GetHostAddresses(Dns.GetHostName());ipv4=ip[0].ToString();this.label4.Text=ipv4;}TcpListenertcpls;Socketsk;NetworkStreamns;StreamReadersr;StreamWritersw;Threadtred;privatevoidbutton1_Click(objectsender,EventArgse){tcpls=newTcpListener(1235);tcpls.Start();MessageBox.Show("服务器已启动");this.button1.Enabled=false;sk=tcpls.AcceptSocket();MessageBox.Show("客户端已连接");ns=newNetworkStream(sk);sr=newStreamReader(ns,Encoding.UTF8);sw=newStreamWriter(ns,Encoding.UTF8);}stringsmessage="";privatevoidbutton2_Click(objectsender,EventArgse){this.textBox1.Focus();tred=newThread(newThreadStart(this.acceptcm));tred.Start();this.textBox2.Focus();}privatevoidbutton3_Click(objectsender,EventArgse){sendtoc();this.textBox2.Focus();}privatevoidtextBox2_KeyPress(objectsender,KeyPressEventArgse){if(e.KeyChar=='\r')sendtoc();}privatevoidacceptcm(){lock(this){try{if(sr.ReadLine()!=null){this.textBox1.Text+=sr.ReadLine();}elsereturn;}catch(System.Exceptionex){}finally{tred.Abort();}}}publicvoidsendtoc(){try{smessage="\r\n"+this.textBox3.Text+"("+DateTime.Now.ToLongTimeString()+")"+""+this.textBox2.Text;this.textBox1.Text+=smessage;this.textBox2.Clear();sw.WriteLine(smessage);sw.Flush();}catch{MessageBox.Show("服务器端错误");}}privatevoidqserver_FormClosed(objectsender,FormClosedEventArgse){if(tcpls!=null)tcpls.Stop();//if(tred!=null)//tred.Abort();Application.Exit();}}}
客户端代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Threading;namespaceClient{publicpartialclassqclient:Form{publicqclient(){InitializeComponent();}TcpClienttcpct;NetworkStreamns;StreamReadersr;StreamWritersw;Threadtrdc;///<summary>///连接服务器操作,发送socket请求///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidbutton1_Click(objectsender,EventArgse){try{stringip=this.textBox4.Text+"."+this.textBox5.Text+"."+this.textBox6.Text+"."+this.textBox7.Text;tcpct=newTcpClient(ip,1235);ns=tcpct.GetStream();sr=newStreamReader(ns);sw=newStreamWriter(ns);this.button1.Enabled=false;}catch{MessageBox.Show("请确认是否开启服务器...");}}stringcmessage="";///<summary>///发送消息事件///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidbutton2_Click(objectsender,EventArgse){try{sendtos();}catch{//MessageBox.Show("出错啦!"+"\r\n"+"1.你是否已经连接服务器?"+"\r\n"+"2.等待服务器发回消息.");}finally{this.textBox2.Focus();}}///<summary>///发送函数///</summary>publicvoidsendtos(){if(this.textBox2.Text=="")//发送{MessageBox.Show("内容不能为空");return;}else{cmessage="("+DateTime.Now.ToLongTimeString()+")"+"\r\n"+this.textBox3.Text+this.textBox2.Text;this.textBox1.Text+=cmessage;this.textBox2.Clear();//savechathistrory();sw.WriteLine(cmessage);sw.Flush();}}///<summary>///接收函数///</summary>publicvoidacceptsm(){lock(this){try//接收{this.textBox1.Text+=sr.ReadLine()+"\r\n";//savechathistrory();}catch{//MessageBox.Show("出错啦!"+"\r\n"+"1.你是否已经连接服务器?"+"\r\n"+"2.没有服务器消息.");}finally{trdc.Abort();}}}///<summary>///接收消息事件///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidbutton3_Click(objectsender,EventArgse){this.textBox1.Focus();trdc=newThread(newThreadStart(acceptsm));trdc.Start();this.textBox2.Focus();}///<summary>///保存历史记录,未做.///</summary>privatevoidsavechathistrory(){StreamWriterfsw=newStreamWriter(Application.UserAppDataPath+"chathistory.txt",false,Encoding.UTF8);sw.WriteLine(this.textBox1.Text);fsw.Flush();fsw.Close();}///<summary>///文件关闭之后,关闭客户端,关闭活动的线程///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidqclient_FormClosed(objectsender,FormC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工企业个人先进事迹材料(6篇)
- 打扫卫生的感谢信(8篇)
- 黑龙江大学《社会学原著导读》2022-2023学年第一学期期末试卷
- 黑龙江大学《能源材料》2022-2023学年第一学期期末试卷
- 黑龙江大学《建筑结构设计软件》2023-2024学年第一学期期末试卷
- 2024年公司股东贷款协议样本版
- 2024年度土地出租简明协议样式版
- 2024年新版住宅买卖及换房协议样本版
- 国庆节小班唱歌活动方案
- 2024年股权转让中介协议版
- 课本剧《刘姥姥进大观园》剧本
- 学生行为规范考核表1
- 小学生美术课件-第4课-美术作品中的比例知识冀美版(共40张PPT)ppt课件
- 网络成瘾-PPT优秀课件
- RECMF齿型三角带规格
- 麦芽糖结晶综述
- 格宾石笼施工技术交底
- 美丽乡村监理实施细则
- 辽沈战役PPT课件
- 机械原理大作业平面连杆机构报告1
- 二年级数学德育渗透教学计划
评论
0/150
提交评论