版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
淮海工学院计算机工程学院实验报告书课程名:计算机网络题目:基于Socket的C/S程序开发班级:G学号:姓名:评语:评语:成绩:指导教师:批阅时间:年月日实验目的理解和稳固传输层与套接字的根本知识,掌握利用套接字实现面向连接的数据传输的一般方法,深入理解客户/效劳器工作模式,学会简单的客户/效劳器程序的开发。实验内容利用Java语言提供的Socket技术,建立一个C/S模式的应用,允许客户端用户输入2个整数,效劳器端接收这2个整数,并计算出它们的和、差、积、商,最后送回客户端。效劳器端ServerSocket类〔.ServerSocket〕构造方法:publicServerSocket(int
port)throwsIOException——S_1接受连接请求:publicSocketaccept()throwsIOException——S_2客户端Socket类〔〕构造方法:publicSocket(String
host,int
port)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();要求:在一台主机上安装并运行效劳器端程序,在另一台计算机上安装并运行客户端程序,测试所编写的程序能否完成规定的功能。实验步骤与源程序源程序:效劳器:import.*;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){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(){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);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;}}}}客户端:import.*;importjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassClientextendsFrameimplementsRunnable,ActionListener{DataInputStreamin=null;DataOutputStreamout=null;Panelp;Labellab1,lab2,lab3;TextFieldtf1,tf2,tf3;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);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());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){}}}}publicvoidrun(){Strings=null;while(true){try{s=in.readUTF();text.append(s+"\n");}catch(IOExceptione){text.append("与效劳器已断开");break;}}}publicstaticvoidmain(Stringargs[]){newClient();}}测试数据与实验结果效劳器:客户端:结果分析与实验体会通过这次实验,进一步了解了套接字一些用法,并且稳固了传输层与套接字的根本知识;以前对套接字不是很熟悉,经过这次实验,明白了套接字在网络编程中有着重要的角色,比方我们
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025秋统编版四年级道德与法治上册第一单元至第四单元测试卷及答案
- 2025湖南衡阳南岳区事业单位选调工作人员13人模拟笔试试题及答案解析
- 2025重庆市巴南区人民医院第四季度编外工作人员招聘8人备考考试题库及答案解析
- 2025年环境责任投资咨询服务
- 2025重庆市永川区教育事业单位面向应届高校毕业生考核招聘80人笔试备考重点题库及答案解析
- 2025中南大学湘雅三医院编外人员招聘笔试备考重点题库及答案解析
- 2025年度黑龙江生态工程职业学院“黑龙江人才周”公开招聘事业编制工作人员6人笔试备考重点试题及答案解析
- 2025云南西双版纳州勐海县机关事务服务中心编外岗位工作人员招聘3人笔试备考重点题库及答案解析
- 2025上海康乐家社区服务发展中心招聘笔试备考重点试题及答案解析
- 2026江苏泰州市靖江市校园招聘教师25人模拟笔试试题及答案解析
- 带隙基准电路的设计
- 2025年《广告策划与创意》知识考试题库及答案解析
- 压力管道安装交叉作业方案
- 2025年副高消化内科试题及答案
- 九年级上册《道德与法治》期中必背大题
- 协助老年人洗浴
- 2025年骨质疏松知识考试练习题及答案
- 【语文】上海市小学二年级上册期末试卷(含答案)
- 2025 小学语文期末复习课件
- DB44∕T 2583-2024 无人水面艇和小型智能船舶海上测试管理规范
- 《13875界面设计》自考复习试题库(含答案)
评论
0/150
提交评论