版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机网络课程设计报告题目:网络聊天程序的设计与实现
姓名:申超明学号: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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度电压力锅产品生命周期管理合同2篇
- 全新解聘劳动合同模板下载3篇
- 2024年度品牌授权合同:甲方品牌持有者与乙方制造商之间的品牌授权使用协议
- 2024年度租赁合同条款和租赁标的详细说明
- 2024年度版权许可合同许可范围和许可费用3篇
- 二零二四年度人力资源咨询服务合同:企业人才招聘、培训、评估全面解决方案3篇
- 2024年度广告制作与发布合同:品牌宣传广告系列
- 2024年度股权投资合同的投资金额与投资方式
- 2024年度互联网公司产品发布会租车合同
- 2024年度工业园区车位租赁合同
- 2024-2030年中国殡葬行业市场运行分析及发展前景研究报告
- 2024-2030年中国即时配送行业未来发展与前景应用领域规模研究报告
- 6个关键点!二十届三中全会解读课件
- 2024-2030年中国重症监护监护系统行业市场发展趋势与前景展望战略分析报告
- 湖南美术出版社六年级上册《书法练习指导》表格教案
- 部编版语文二年级上册《语文园地三我喜欢的玩具》(教案)
- 登泰山记-教学课件
- 俱乐部陪玩方案
- 中国成人心肌炎临床诊断与治疗指南2024解读
- 电路分析基础(浙江大学)智慧树知到期末考试答案章节答案2024年浙江大学
- 建模师工作合同
评论
0/150
提交评论