还剩3页未读,继续阅读
文本内容:
实验报告实验一k编程Socket
一、实验目的通过程序的编写、调试,掌握编程的基本方法,了解客户端与服务器端的特点,socket socket掌握并熟悉运用类与类socket ServerSocket
二、实验内容
①学习编程使用的类和接口,着重掌握基于协议的socket TCPsocketo
②编写服务器端的应用程序
③编写客户端的应用程序
④实现服务器端与客户端的交互
三、实验代码.服务器端程序1过程在端口上创建一个等待连接的对象5000ServerSocket server:server=new ServerSocket5000;接着调用对象的方法等待某客户程序发出连接请求该方法一直阻塞直到有客户server accept连接到带端口一旦有客户发送正确请求,则连接成功,方法返回一个对象,于acceptSocket是得到了一个新的用于通信的对象,通信链路建立成功然后利用类提供的方法Socket Socket创建对象的输入流和输出流此后即于客户端进行通信,直到客户端断开连接即关闭各Socket个流结束通信代码如下importjava.net.*;import java.io.*;class aa{static public void main String args[]throws lOExceptionServerSocketserver=null;Socket socket=null;InputStream is=null;OutputStrcam os=null;DatalnputStream in=null;PrintStream out=null;try{〃在端口注册服务5000server=new ServerSocket5000;印〃侦听连接请求,等待连接socket=server.acc t;服务器端界面System.out.printing**********************^1*KL*^1*KL*II\^7*%•,与客户端连接成功!”;System.out.printing;对话内容为”;System.out.printlnnn;等待客户发送信息.•…”;System,out.printin//获取对应的的输入/输出流Socketis=socket.getInputStream;//建立数据流os=socket.getOutputStream;in=new DatalnputStreamis;out=new Printstreamos;//表示向对方输出out.println Welcome!;//表示向对方输出〃逐行读取String str=in.readLine;do客户端说:+System,out.printin str;str=in.readLine;〃如果是就退出}whilestrim.equals“BYE”“BYE”客户想要离开;System,out.printin〃捕获程序异常catchException eSystem.out.printlnnError:n+e;finally;//关闭输入流is.close〃关闭输出流;//关闭数据输入流os.close;in.close〃关闭socket.close;socket.客户端程序2过程首先创建一个指向服务器的指定端口号的对象5000Socket socket:socket=new此时服务器指定为本地计算机,若要在网络中指定服务器,只需要将参数SocketTocalhost”,5000;改成相应的服务器名或者地址即可localhost IP然后程序利用类提供的方法创建对象的输入流和输出流此后即于服务器通信,Socket Socket断开连接即关闭各个流结束通信代码如下importjava.net.*;import java.io.*;class bbstaticpublicvoidmainStringargs[]throws lOException二Socket socketnull;InputStream is=null;OutputStream os=null;DatalnputStream in=null;PrintStream out=null;String d=null;try{〃向本地服务器申请链接〃注意端口号要与服务器保持一致:5000socket=new Socketnlocalhostn,5000;客户端界面System,out.printing********************.A-卜―卜力、‘•*1*fix-R与服务器连接成功!”;System.out.printlnnn;对话内容为:;System,out.printing;请输入信息:;〃获取对应的的输入/输出流Socketis=socket.getInputStream;//建立数据流os=socket.getOutputStream;in=new DatalnputStreamis;out=new Printstreamos;d=in.readLine;服务器说+d;byte a[]=new byte
[100];System.in.reada;String b=new Stringa,0;,去点输入的第一个字符前的空格b=b.trimwhile!b.equalsMBYEn请输入您要发送的信息〃如果输入的不是,就向对方out.printin+b;“BYE”输出System.in.rcada;b=new Stringa,0;b=b.trim;out.printlnb;〃捕获程序异常catchException eSystem.out.printlnnError:H+e;finally〃关闭输入流is.close;〃关闭输出流〃关闭os.close;socket.close;socket
四、程序运行过程.运行客户端程序,当客户端程序运行后,服务器端立即显示连接成功并等待客户端发送信息,1结果如下图.服务器程序的运行结果客户端界面…………………与服务器连接成功!IMMMMMMXXMMMMMMXXMMMM[对话内容为:客户端程序运行后的结果.客户端向服务器端发送信息,如客户端发送信息、服务器端显示客户端发来的信2”123456789息,运行结果如下图C:\PROGRA-l\JCREAT-l\GE
2001.exe,而界囿XXMXMXXXXXXMXXXXXMX j-J与服务器连接成功!对话内容为请卷入信息方艮务器说welcome!123456789*服务器端界面与客户端连接成功!对话内容为差待富户发送信息……各户端说
123456789.当客户端向服务器端发送信息时,即关闭连接,如下图所示3“BYE”的C:\PROGRA-1\JCREAT~1\GE200Lexe妄户立常界ZIXXMXXXXXXXXXXXXXXXMX与服务器连接成功!对话内容为请殖入信息服翁器说we lco me!123456789BYEC:\PROGRA-l\JCREAT-l\GE
2001.exe一nrn七口口上山b版-泞而界囿XXXXXXXXXXXXXXXXXXXXXX与客户端连接成功!对话内容为:假卷寮里发送信息、…唇户麻说管户想要离开123456789
五、实验心得首先我把类申明成为类型,运行出现以下问题:类是公共的,应在名为aa publicbb bb.java的文件中申明经过书籍知没有包的类不能被申明为java public服务器端的端口号必须与客户端的端口号一致若不一致,会提示但是服务器端获取的不一定就是客户端java.net.ConnectException:Connection refused:connect;的端口号,服务器端会在任意一个空闲的端口创建对象,与客户端连接;而客户端获取的socket端口号即为服务器提供的端口号.端口号的选择一定要在以上,我先试图在端口建立连接,运行程序时抛出1024100异常,即端口已被绑定选择以上就是怕出现异常,当并不BindException1024BindException是以下所有端口号都被绑定了10245在实验过程中,我巩固了以前基础的知识初步熟悉并掌握了的结java try-catch-finally构,学习了解异常处理的作用了解类与类的作用与用法,会用一些Socket ServerSocketSocket类与类的重要方法并且初步了解中用来实现客户端操作类,这ServerSocket javaTCP Socket个类本身使用直接代码通过主机操作系统的本地栈进行通信TCP。
个人认证
优秀文档
获得点赞 0