已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验名称:一个简单的客户/服务器程序实验目的:1、熟悉Eclipse编程环境。2、了解TCP与UDP协议,以及它们之间的区别。3、了解客户/服务器模型原理。 4、熟悉Socket编程原理,掌握简单的套接字编程。实验环境:硬件:PC机(两台)、网卡、已经设定好的以太网环境软件:Eclipse 编程语言:java实验内容:编写用TCP协议实现的Client端和Server端程序并调试通过。程序分两部分:客户程序和服务器程序。工作过程是: 服务器首先启动,它创建套接字之后等待客户的连接;客户启动后创建套接字,然后和服务器建立连接;建立连接后,客户接收键盘输入,然后将数据发送到服务器,服务器收到到数据后,将接收到的字符在屏幕上显示出来。或者服务器接收键盘输入,然后将数据发送到客户机,客户机收到数据后,将接收到的字符在屏幕上显示出来。 程序流程:源程序服务器端:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Net;usingSystem.Net.Sockets;/添加命名空间usingSystem.Threading;/添加命名空间namespaceWFAsynSocketpublicpartialclassForm1:FormThreadLisThread;SocketLisSocket;SocketnewSocket;EndPointpoint;stringstrmes=String.Empty;intport=8000;/定义侦听端口号publicForm1()InitializeComponent();privatevoidbtn_Listen_Click(objectsender,EventArgse)LisThread=newThread(newThreadStart(BeginListern);/开线程执行BeginListern方法LisThread.Start();/线程开始执行publicIPAddressGetIP()/*获取本地服务器的ip地址*/IPHostEntryiep=Dns.GetHostEntry(Dns.GetHostName();IPAddressip=iep.AddressList0;returnip;publicvoidBeginListern()LisSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);/实例化SocketIPAddressServerIp=GetIP();/*获取本地服务器的ip地址*/IPEndPointiep=newIPEndPoint(ServerIp,port);LisSocket.Bind(iep);/*将Socket绑定ip*/toolStripStatusLabel1.Text=iep.ToString()+正在监听;LisSocket.Listen(50);/Socket开始监听newSocket=LisSocket.Accept();/获取连接请求的Socket/*接收客户端Socket所发的信息*/while(true)trybytebyteMessage=newbyte100;newSocket.Receive(byteMessage);/接收信息MessageBox.Show(Encoding.Default.GetString(byteMessage);Control.CheckForIllegalCrossThreadCalls=false;point=newSocket.RemoteEndPoint;/获取客户端的Socket的相关信息IPEndPointIPpoint=(IPEndPoint)point;strmes+=IPpoint.Address.ToString()+DateTime.Now.ToString()+说+Encoding.Default.GetString(byteMessage).Trim(newchar0)+rn;this.richTextBox1.Text=strmes;catch(SocketExceptionex)toolStripStatusLabel1.Text+=ex.ToString();privatevoidbtn_Cancel_Click(objectsender,EventArgse)tryLisSocket.Close();/关闭SocketLisThread.Abort();/线程停止LisThread=null;catch(Exceptionex)MessageBox.Show(ex.Message);finallyApplication.Exit();privatevoidbtn_Send_Click(objectsender,EventArgse)bytebyteData=Encoding.Default.GetBytes(this.richTextBox2.Text);newSocket.Send(byteData);/发送信息即由服务器往客户端上发信息客户端:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Threading;usingSystem.Net.Sockets;usingSystem.Net;namespaceWFAsynSoketClientpublicpartialclassForm1:FormpublicstaticSocketClientSocket;publicForm1()InitializeComponent();/*往服务器上发送信息按钮事件*/privatevoidbtn_Send_Click(objectsender,EventArgse)if(ClientSocket.Connected)/判断Socket是否已连接byteSendMessage=newbyte100;SendMessage=Encoding.ASCII.GetBytes(this.richTextBox1.Text);ClientSocket.Send(SendMessage);/从数据中的指示位置开始将数据发送到连接的Socket。MessageBox.Show(Encoding.Default.GetString(SendMessage)+发送成功!);elseMessageBox.Show(未建立连接!);/*退出按钮*/privatevoidbtn_Cancel_Click(objectsender,EventArgse)ClientSocket.Shutdown(SocketShutdown.Both);/发送完成之后停止SocketClientSocket.Close();/发送完成之后关闭SocketApplication.Exit();/*接收来自服务器上的信息*/publicvoidtargett()this.toolStripStatusLabel1.Text=已经建立连接准备接受数据;while(true)bytebytes=newbyte100;intrev=ClientSocket.Receive(bytes,bytes.Length,0);/将数据从连接的Socket接收到接收缓冲区的特定位置。if(rev=0)break;stringstrev=System.Text.Encoding.Default.GetString(bytes);this.textBox1.AppendText(服务器对客户端说:+strev+rn);privatevoidForm1_Load(objectsender,EventArgse)/*为客户端Socket建立连接到服务器*/privatevoidbutton1_Click(objectsender,EventArgse)ClientSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);stringip=6;/服务器ipIPAddressipa=IPAddress.Parse(ip);IPEndPointiep=newIPEndPoint(ipa,8000);this.toolStripStatusLabel1.Text=已经建立连接.;Control.CheckForIllegalCrossThreadCalls=false;tryClientSocket.Connect(iep);/连接到服务器Threadthread=newThread(newThreadStart(targett);thread.Start();catch(Exceptio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030德国轨道交通自动驾驶技术发展分析
- 2025-2030德国真空设备行业市场运行态势及投资价值评估分析方案
- 高中物理实验误差分析及机器学习在异常值检测中的应用教学研究课题报告
- 2025-2030德国环保机器人行业技术竞争分析
- 2025-2030德国汽车配件系统行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030德国智能家居产品市场供需发展分析及投资策略规划深度研究报告
- 小学英语六年级下册Unit 1 Sports Lesson 2 At the Sports Shop教学设计
- 2025年幼儿园管理试题及答案
- 班级线上联欢会课件
- 班级环保教学课件
- 2025全国注册监理工程师继续教育考试题库及参考答案
- “无废医院”建设指引
- 篮球比赛应急预案及措施
- 2025-2030卫星互联网星座组网进度与地面终端兼容性报告
- 医院功能科年终总结
- 医院科室整改前后对比
- 2024年QC课题(提升办案现场执法效率)专卖监督管理科
- 青光眼病人的健康宣教
- 海外机械设备管理制度
- 弘扬教育家精神:新时代教师的使命与担当
- 向银行申请减免利息还本金申请书样板
评论
0/150
提交评论