网络编程实验报告.doc_第1页
网络编程实验报告.doc_第2页
网络编程实验报告.doc_第3页
网络编程实验报告.doc_第4页
网络编程实验报告.doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论