收藏 分销(赏)

实验四-基于Socket的CS程序.doc

上传人:w****g 文档编号:3947104 上传时间:2024-07-24 格式:DOC 页数:7 大小:52.54KB
下载 相关 举报
实验四-基于Socket的CS程序.doc_第1页
第1页 / 共7页
实验四-基于Socket的CS程序.doc_第2页
第2页 / 共7页
实验四-基于Socket的CS程序.doc_第3页
第3页 / 共7页
实验四-基于Socket的CS程序.doc_第4页
第4页 / 共7页
实验四-基于Socket的CS程序.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、淮海工学院计算机工程学院实验报告书课程名:计算机网络题 目:基于Socket的C/S程序开发 班 级: G学 号: 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日 计算机网络实验报告 - 6 -一、 实验目的理解和巩固传输层与套接字的基本知识,掌握利用套接字实现面向连接的数据传输的一般方法,深入理解客户/服务器工作模式,学会简单的客户/服务器程序的开发。二、 实验内容利用Java语言提供的Socket技术,建立一个C/S模式的应用,允许客户端用户输入2个整数,服务器端接收这2个整数,并计算出它们的和、差、积、商,最后送回客户端。服务器端ServerSocket类(。ServerSo

2、cket )构造方法:public ServerSocket(intport) throws IOException-S_1接受连接请求:public Socket accept() throws IOException-S_2客户端Socket类(java。net。Socket)构造方法:public Socket(Stringhost, intport) throws UnknownHostException, IOException C_1读取数据:public InputStream getInputStream() throws IOException-S_5,C_3发送数据:pub

3、lic OutputStream getOutputStream() throws IOExceptionS_3,C_4服务器端编程创建ServerSocket对象ServerSocket server=new ServerSocket(8000);监听来自客户端的请求Socket linkSocket=server.accept();与客户端进行通信利用linkSocket。getInputStream() 接收客户端数据;对读取的数据进行加、减、乘、除计算;利用linkSocket.getoutputStream() 向客户端发送计算结果;监听结束时关闭服务器server。close();

4、客户端编程建立连接Socket client=new Socket(“ServerComputerName, 8000);与服务器进行通信从键盘读入两个整数;利用client.getoutputStream() 向服务器端发送数据;利用client.getInputStream() 接收服务器端结果;显示从服务器端得到的结果;释放连接Client。close();要求:在一台主机上安装并运行服务器端程序,在另一台计算机上安装并运行客户端程序,测试所编写的程序能否完成规定的功能。 三、 实验步骤与源程序源程序:服务器:import 。;import java。util。*;import java

5、。io.;import java。awt.;import java。awt.event。*;import javax.swing.*;public class Serverpublic Server() ServerSocket server=null;Server_thread thread;Socket you=null;while(true)try server=new ServerSocket(8755); catch(IOException e1) System。out.println(”正在监听); /ServerSocket对象不能重复创建try System.out。print

6、ln(”等待客户呼叫”);you=server.accept();System。out.println(”已连接到客户”);System。out。println(”客户的地址:”+you.getInetAddress()); catch (IOException e) System。out.println(正在等待客户”); if(you!=null) new Server_thread(you).start(); /为每个客户启动一个专门的线程public static void main(String args) new Server(); class Server_thread exte

7、nds ThreadSocket socket;DataOutputStream out=null;DataInputStream in=null;String s=null;boolean quesion=false;Server_thread(Socket t) socket=t;try out=new DataOutputStream(socket。getOutputStream();in=new DataInputStream(socket.getInputStream());catch (IOException e)public void run()while(true) doubl

8、e a=new double2; int i=0;trys=in。readUTF();/堵塞状态,除非读取到信息quesion=false;StringTokenizer fenxi=new StringTokenizer(s,”,”);while(fenxi.hasMoreTokens() & quesion=false)String temp=fenxi。nextToken();try ai=Double.valueOf(temp)。doubleValue();i+; catch(NumberFormatException e) out。writeUTF(请输入数字字符”);quesion

9、=true;if(quesion=false)double s=a0+a1; double p=a0a1;double q=a0a1; double r=a0/a1;out。writeUTF(” ”+a0+”+a1+=+s);out.writeUTF( ”+a0+”+a1+”=”+p);out.writeUTF( ”+a0+”+a1+”=”+q);out。writeUTF( +a0+”/”+a1+=”+r);System。out。println(客服端数据:+a0+”和+a1);System。out.println(”完成客户端运算”);catch (IOException e)System。

10、out。println(客户离开”); return; 客户端:import 。;import java。io.*;import java。awt。;import java。awt。event。*;import javax。swing。;public class Client extends Frame implements Runnable,ActionListener DataInputStream in = null;DataOutputStream out = null;Panel p;Label lab1,lab2,lab3;TextField tf1,tf2,tf3;Button

11、connection,send;Socket socket = null; Thread thread; TextArea text; public Client() super(客户端:”);setLayout(new FlowLayout();setSize(300,250); /设置窗口大小setLocation(200,200);/设置窗口显示位置setResizable(false);p=new Panel();p。setLayout(null); p。setBounds(0,0,300,250);addWindowListener(new WindowAdapter()public

12、 void windowClosing(WindowEvent e) System。exit(0); );text = new TextArea();lab1=new Label(”输入IP地址:”); lab1。setBounds(5,5,60,25);lab2=new Label(”第一个数字:”); lab2。setBounds(5,35,60,25);lab3=new Label(”第二个数字:”); lab3。setBounds(5,65,60,25);tf1=new TextField(10); tf1。setBounds(80,5,100,25);tf2=new TextFiel

13、d(10); tf2。setBounds(80,35,100,25);tf3=new TextField(10); tf3.setBounds(80,65,100,25); connection=new Button(连接服务器);connection.setBounds(200,5,90,25);connection。addActionListener(this);send=new Button(”发送数据”);send。setBounds(200,65,90,25);send。addActionListener(this);text=new TextArea(200,50);text.se

14、tBounds(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=new Socket();thread = new Thread(this);public void actionPerformed(ActionEvent e) if(e。getSource()=connection)InetAddress address

15、=null;InetSocketAddress socketAddress=null;try /请求和服务器建立套接字连接:if(socket.isConnected()) else address=InetAddress.getByName(tf1.getText();socketAddress=new InetSocketAddress(address,8755);socket。connect(socketAddress,2000);/*等待2秒中in =new DataInputStream(socket。getInputStream());out = new DataOutputStr

16、eam(socket.getOutputStream(); send.setEnabled(true);JOptionPane.showMessageDialog(this,连接成功!”,”成功!”,JOptionPane。INFORMATION_MESSAGE);thread.start(); catch(IOException ex) System.out。println(time out”+ex);System.out。println(socketAddress.getHostName()+”:”+socketAddress.getPort());JOptionPane.showMess

17、ageDialog(this,”连接超时!”,”错误!,JOptionPane。ERROR_MESSAGE);new Client();dispose();if(e。getSource()=send) String s=tf2。getText()+,+tf3。getText();if(s!=null) try out。writeUTF(s); catch(IOException e1)public void run() String s=null;while(true)try s=in。readUTF();text。append(s+n);catch(IOException e) text.a

18、ppend(”与服务器已断开); break; public static void main(String args) new Client(); 四、 测试数据与实验结果服务器:客户端:五、 结果分析与实验体会通过这次实验,进一步了解了套接字一些用法,并且巩固了传输层与套接字的基本知识;以前对套接字不是很熟悉,经过这次实验,明白了套接字在网络编程中有着重要的角色,比如我们使用的聊天工具就是利用套接字来实现的.六、思考题六、 Java语言中,服务器端和客户端套接字对象类相同吗?如不同,有何差别?答:不相同.客户端的程序使用Socket类建立到服务器的套接字连接,而服务器使用ServerSocket对象等待接收客户的信息。七、 程序编写完毕并编译后,先运行客户端程序,还是先运行服务器端程序?为什么?答:先运行服务器端程序.因为服务器端需要一直监听服务器端是否有请求。八、 Java语言中如何使用UDP协议进行数据传输的?答:java里UDP协议传送的方式细节已经封装了到类DatagramSocket里了,只要用DatagramSocket的对象进行传输数据就可以了。

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服