实验四-基于Socket的CS程序

上传人:bei****lei 文档编号:147808907 上传时间:2022-09-03 格式:DOC 页数:12 大小:170.50KB
收藏 版权申诉 举报 下载
实验四-基于Socket的CS程序_第1页
第1页 / 共12页
实验四-基于Socket的CS程序_第2页
第2页 / 共12页
实验四-基于Socket的CS程序_第3页
第3页 / 共12页
资源描述:

《实验四-基于Socket的CS程序》由会员分享,可在线阅读,更多相关《实验四-基于Socket的CS程序(12页珍藏版)》请在装配图网上搜索。

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

2、verSocket )构造方法: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 Ou

3、tputStream 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.io.

5、*;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

6、(等待客户呼叫);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 Threa

7、dSocket 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 do

8、uble2; 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(quesi

9、on=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; 客

10、户端: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 soc

11、ket = 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(WindowE

12、vent 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

13、);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);

14、 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 socketAddre

15、ss=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.se

16、tEnabled(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_

17、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

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

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!