实验四-基于Socket的CS程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

淮海工学院计算机工程学院实验报告书课程名:计算机网络题目:基于Socket的C/S程序开发班级:G学号:姓名:评语:成绩:指导教师:批阅时间:年月日《计算机网络》实验报告-1-一、实验目的理解和巩固传输层与套接字的基本知识,掌握利用套接字实现面向连接的数据传输的一般方法,深入理解客户/服务器工作模式,学会简单的客户/服务器程序的开发。二、实验内容利用Java语言提供的Socket技术,建立一个C/S模式的应用,允许客户端用户输入2个整数,服务器端接收这2个整数,并计算出它们的和、差、积、商,最后送回客户端。服务器端ServerSocket类(java.net.ServerSocket)《计算机网络》实验报告-2-构造方法:publicServerSocket(intport)throwsIOException——S_1接受连接请求:publicSocketaccept()throwsIOException——S_2客户端Socket类(java.net.Socket)构造方法:publicSocket(Stringhost,intport)throwsUnknownHostException,IOException——C_1读取数据:publicInputStreamgetInputStream()throwsIOException——S_5,C_3发送数据:publicOutputStreamgetOutputStream()throwsIOException——S_3,C_4服务器端编程创建ServerSocket对象ServerSocketserver=newServerSocket(8000);监听来自客户端的请求SocketlinkSocket=server.accept();与客户端进行通信利用linkSocket.getInputStream()接收客户端数据;对读取的数据进行加、减、乘、除计算;利用linkSocket.getoutputStream()向客户端发送计算结果;监听结束时关闭服务器server.close();客户端编程建立连接Socketclient=newSocket(“ServerComputerName”,8000);与服务器进行通信从键盘读入两个整数;利用client.getoutputStream()向服务器端发送数据;利用client.getInputStream()接收服务器端结果;显示从服务器端得到的结果;释放连接Client.close();要求:在一台主机上安装并运行服务器端程序,在另一台计算机上安装并运行客户端程序,测试所编写的程序能否完成规定的功能。三、实验步骤与源程序源程序:服务器:importjava.net.*;《计算机网络》实验报告-3-importjava.util.*;importjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassServer{publicServer(){ServerSocketserver=null;Server_threadthread;Socketyou=null;while(true){try{server=newServerSocket(8755);}catch(IOExceptione1){System.out.println(正在监听);}//ServerSocket对象不能重复创建try{System.out.println(等待客户呼叫);you=server.accept();System.out.println(已连接到客户);System.out.println(客户的地址:+you.getInetAddress());}catch(IOExceptione)《计算机网络》实验报告-4-{System.out.println(正在等待客户);}if(you!=null){newServer_thread(you).start();}//为每个客户启动一个专门的线程}}publicstaticvoidmain(Stringargs[]){newServer();}}classServer_threadextendsThread{Socketsocket;DataOutputStreamout=null;DataInputStreamin=null;Strings=null;booleanquesion=false;Server_thread(Sockett){socket=t;try{out=newDataOutputStream(socket.getOutputStream());in=newDataInputStream(socket.getInputStream());}catch(IOExceptione){}}publicvoidrun()《计算机网络》实验报告-5-{while(true){doublea[]=newdouble[2];inti=0;try{s=in.readUTF();//堵塞状态,除非读取到信息quesion=false;StringTokenizerfenxi=newStringTokenizer(s,,);while(fenxi.hasMoreTokens()&&quesion==false){Stringtemp=fenxi.nextToken();try{a[i]=Double.valueOf(temp).doubleValue();i++;}catch(NumberFormatExceptione){out.writeUTF(请输入数字字符);quesion=true;}}if(quesion==false){doubles=a[0]+a[1];doublep=a[0]-a[1];doubleq=a[0]*a[1];doubler=a[0]/a[1];out.writeUTF(+a[0]+++a[1]+=+s);out.writeUTF(+a[0]+-+a[1]+=+p);《计算机网络》实验报告-6-out.writeUTF(+a[0]+*+a[1]+=+q);out.writeUTF(+a[0]+/+a[1]+=+r);System.out.println(客服端数据:+a[0]+和+a[1]);System.out.println(完成客户端运算);}}catch(IOExceptione){System.out.println(客户离开);return;}}}}客户端:importjava.net.*;importjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassClientextendsFrameimplementsRunnable,ActionListener{DataInputStreamin=null;DataOutputStreamout=null;Panelp;Labellab1,lab2,lab3;TextFieldtf1,tf2,tf3;《计算机网络》实验报告-7-Buttonconnection,send;Socketsocket=null;Threadthread;TextAreatext;publicClient(){super(客户端:);setLayout(newFlowLayout());setSize(300,250);//设置窗口大小setLocation(200,200);//设置窗口显示位置setResizable(false);p=newPanel();p.setLayout(null);p.setBounds(0,0,300,250);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});text=newTextArea();lab1=newLabel(输入IP地址:);lab1.setBounds(5,5,60,25);lab2=newLabel(第一个数字:);lab2.setBounds(5,35,60,25);lab3=newLabel(第二个数字:);lab3.setBounds(5,65,60,25);tf1=newTextField(10);tf1.setBounds(80,5,100,25);tf2=newTextField(10);tf2.setBounds(80,35,100,25);tf3=newTextField(10);tf3.setBounds(80,65,100,25);connection=newButton(连接服务器);connection.setBounds(200,5,90,25);connection.addActionListener(this);《计算机网络》实验报告-8-send=newButton(发送数据);send.setBounds(200,65,90,25);send.addActionListener(this);text=newTextArea(200,50);text.setBounds(5,100,290,110);p.add(lab1);p.add(lab2);p.add(lab3);p.add(tf1);p.add(tf2);p.add(tf3);p.add(connection);p.add(send);p.add(text);add(p);setVisible(true);socket=newSocket();thread=newThread(this);}publicvoidactionPerformed(ActionEvente){if(e.getSource()==connection){InetAddressaddress=null;InetSocketAddresssocketAddress=null;try//请求和服务器建立套接字连接:{if(socket.isConnected()){}else{address=InetAddress.getByName(tf1.getText());《计算机网络》实验报告-9-socketAddress=newInetSocketAddress(address,8755);socket.connect(socketAddress,2000);//*等待2秒中in=newDataInputStream(socket.getInputStream());out=newDataOutputStream(socket.getOutputStream());send.setEnabled(true);JOptionPane.showMessageDialog(this,连接成功!,成功!,JOptionPane.INFORMATION_MESSAGE);thread.start();}}catch(IOExceptionex){System.out.println(timeout+ex);System.out.println(socketAddress.getHostName()+:+socketAddress.getPort());JOptionPane.showMessageDialog(this,连接超时!,错误!,JOptionPane.ERROR_MESSAGE);newClient();dispose();}}if(e.getSource()==send){Strings=tf2.getText()+,+tf3.getText();if(s!=null){try{out.writeUTF(s);}catch(IOExceptione1){}

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功