ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:106.22KB ,
资源ID:4301346      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4301346.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验四基于Socket的CS程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验四基于Socket的CS程序.docx

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

2、rverSocket(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 getOutputStrea

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

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

5、t 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.accep

6、t();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;DataOutput

7、Stream 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.re

8、adUTF();/堵塞状态,除非读取到信息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;

9、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.

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

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

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

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

14、;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 /请求和服务器建立套接字连

15、接: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);JOptionPan

16、e.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();dis

17、pose();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(

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1