版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上淮海工学院计算机工程学院实验报告书课程名: 计算机网络 题 目: 基于Socket的C/S程序开发 班 级: G 学 号: 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日专心-专注-专业一、 实验目的理解和巩固传输层与套接字的基本知识,掌握利用套接字实现面向连接的数据传输的一般方法,深入理解客户/服务器工作模式,学会简单的客户/服务器程序的开发。二、 实验内容利用Java语言提供的Socket技术,建立一个C/S模式的应用,允许客户端用户输入2个整数,服务器端接收这2个整数,并计算出它们的和、差、积、商,最后送回客户端。服务器端ServerSocket类(
2、.ServerSocket )构造方法:public ServerSocket(int port) throws IOExceptionS_1接受连接请求:public Socket accept() throws IOExceptionS_2客户端Socket类(.Socket)构造方法:public Socket(String host, int port) throws UnknownHostException, IOException C_1读取数据:public InputStream getInputStream() throws IOExceptio
3、nS_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() 向客户端发送计算结果;监听结束时关闭服务
4、器server.close();客户端编程建立连接Socket client=new Socket(“ServerComputerName”, 8000);与服务器进行通信从键盘读入两个整数;利用client.getoutputStream() 向服务器端发送数据;利用client.getInputStream() 接收服务器端结果;显示从服务器端得到的结果;释放连接Client.close();要求:在一台主机上安装并运行服务器端程序,在另一台计算机上安装并运行客户端程序,测试所编写的程序能否完成规定的功能。 三、 实验步骤与源程序源程序:服务器:import .*;import java.
5、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("正在监听"); /ServerSoc
6、ket对象不能重复创建 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(); /为每个客户启动一个专门的线程 pu
7、blic 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.
8、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.va
9、lueOf(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+&q
10、uot;="+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("客户离开");
11、 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;
12、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
13、 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
14、,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.addActionL
15、istener(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)
16、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(so
17、cket.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(
18、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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华师大版初中科学阳光的传播(第1课时)(27课件)
- 医疗缺陷报告与处理制度
- 观察DNA和RNA在细胞中的分布
- 2024年湖南客运从业资格证模拟考试题库答案解析
- 算法设计与分析 课件 6.1-贪心法引例-找零钱问题
- 算法设计与分析 课件 1.2.2-算法分析准则 - 时间复杂度
- 2024年那曲客运从业资格证到期换证考试
- 2024年河北客运从业资格证考试题目和答案图片
- 2024年阿坝c1道路运输从业资格证考试
- 吉首大学《竞技武术套路5》2021-2022学年第一学期期末试卷
- 《悦纳至正让儿童生命幸福生长》莞城中心小学品牌培育工作汇报修改版
- 动力设备运行维护管理流程图
- 视听语言(山东联盟)知到章节答案智慧树2023年潍坊学院
- 2023年住宅室内装饰装修管理办法
- 冬季交通安全教育
- 教案外科休克
- 【超星尔雅学习通】海上丝绸之路网课章节答案
- 畜牧业经济管理全套
- 农旅一体化生态农业示范园区建设项目可行性研究报告
- 煤矿安全知识竞赛风险题(120道题)备课讲稿
- GB/T 3811-1983起重机设计规范
评论
0/150
提交评论