




免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
淮海工学院计算机工程学院实验报告书课程名: 计算机网络 题 目: 基于Socket的C/S程序开发 班 级: G 学 号: 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日 计算机网络实验报告 - 11 -一、 实验目的理解和巩固传输层与套接字的基本知识,掌握利用套接字实现面向连接的数据传输的一般方法,深入理解客户/服务器工作模式,学会简单的客户/服务器程序的开发。二、 实验内容利用Java语言提供的Socket技术,建立一个C/S模式的应用,允许客户端用户输入2个整数,服务器端接收这2个整数,并计算出它们的和、差、积、商,最后送回客户端。服务器端ServerSocket类(.ServerSocket )构造方法:public ServerSocket(intport) throws IOExceptionS_1接受连接请求:public Socket accept() throws IOExceptionS_2客户端Socket类(.Socket)构造方法:public Socket(Stringhost, intport) throws UnknownHostException, IOException C_1读取数据:public InputStream getInputStream() throws IOExceptionS_5,C_3发送数据:public OutputStream getOutputStream() throws IOExceptionS_3,C_4服务器端编程创建ServerSocket对象ServerSocket server=new ServerSocket(8000);监听来自客户端的请求Socket linkSocket=server.accept();与客户端进行通信利用linkSocket.getInputStream() 接收客户端数据;对读取的数据进行加、减、乘、除计算;利用linkSocket.getoutputStream() 向客户端发送计算结果;监听结束时关闭服务器server.close();客户端编程建立连接Socket client=new Socket(“ServerComputerName”, 8000);与服务器进行通信从键盘读入两个整数;利用client.getoutputStream() 向服务器端发送数据;利用client.getInputStream() 接收服务器端结果;显示从服务器端得到的结果;释放连接Client.close();要求:在一台主机上安装并运行服务器端程序,在另一台计算机上安装并运行客户端程序,测试所编写的程序能否完成规定的功能。 三、 实验步骤与源程序源程序:服务器:import .*;import java.util.*;import java.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.println(等待客户呼叫);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 extends 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) double 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=true;if(quesion=false)double s=a0+a1; double p=a0-a1;double q=a0*a1; 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.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 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 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 TextField(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.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=new Socket();thread = new Thread(this);public void actionPerformed(ActionEvent e) if(e.getSource()=connection)InetAddress address=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 DataOutputStream(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.showMessageDialog(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.append(与服务器已断开); break; public static void main(String args) new Client(); 四、 测试数据与实验结果服务器:客户端:五、 结果分析与实验体会通过这次实验,进一步了解了套接字一些用法,并且巩固了传输层与套接字的基本知识;以前对套接字不是很熟悉,经过这次实验,明白了套接字在网络编程中有着重要的角色,比如我们使用的聊天工具就是利用套接字来实现的。六、思
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机电设备安装施工事故应急预案
- 隧道防震加固技术方案
- 水痘课件试讲
- 知识点3.3从人文层面感知色彩设计构成设计色彩68课件
- 装饰施工图设计新氧科技办公楼北京艾迪尔85课件
- 二零二五年度海沧区人民政府与厦门市水利局共建水利基础设施项目合同
- 2025版房地产商房地产营销推广策划合同
- 二零二五年度仓储物抵押反担保协议
- 二零二五年度玩具代加工业务合作协议
- 2025版大型企业培训中心场地租赁及讲师住宿服务合同
- 回收黄金免责合同协议
- 广东省广州市2025届普通高中毕业班综合测试(二)英语试题(含答案)
- 开利30HXY-HXC螺杆冷水机组开机、运行维护手册
- 医学防汛知识课件
- 2025年税法知识培训
- 婚内债务协议
- 70岁老年人三力测试能力考试题库附答案
- 新任教师学生管理方法培训
- 2025年智慧校园校企合作专业共建服务合同3篇
- 定额〔2025〕2号文-关于发布2020版电网技术改造及检修工程概预算定额2024年下半年价格
- 《脑卒中与急救》课件
评论
0/150
提交评论