基于Socket的CS程序开发.docx

上传人:王** 文档编号:718418 上传时间:2023-12-24 格式:DOCX 页数:5 大小:31.78KB
下载 相关 举报
基于Socket的CS程序开发.docx_第1页
第1页 / 共5页
基于Socket的CS程序开发.docx_第2页
第2页 / 共5页
基于Socket的CS程序开发.docx_第3页
第3页 / 共5页
基于Socket的CS程序开发.docx_第4页
第4页 / 共5页
基于Socket的CS程序开发.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于Socket的CS程序开发.docx》由会员分享,可在线阅读,更多相关《基于Socket的CS程序开发.docx(5页珍藏版)》请在优知文库上搜索。

1、诲陈工学旌计算机工在考底实验报告书课程名:计算机网络题目:基于Socket的C7S程序开发班级:学号:姓名:.实数据传为开发输的一序二实成绩:指导教师:批阅时间:2023年10月30日日,允卜算出它们的和、差、积、商,最后送回客户端。三.实验步骤与源程序源程序:1、效劳器端:.*;importjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassClientextendsFrameimplementsRunnable,ActionListenerDataInputStrearnin=nu

2、ll;DataOutputStreaniout=null;Panelp;1.abelIabl1lab2,lab3;TextFieldtfl,tf2,tf3;Buttonconnection,send;Socketsocket=null;Threadthread;TextAreatext;publicClient()SUPer(客户端:);SetLayout(newFlowLayoutO);setSize(300,250);设置窗口大小SetLocation(200,200);/设置窗口显示位置SetResizableCfalse);p=newPanel();p. SetLayout(null)

3、;p.SetBounds(0,O,300,250);addWindowListener(newWindowAdapter()publicvoidwindowClosing(WindowEvente)System,exit(0););text=newTextAreaO;labl=newLabe1(输入IP地址:);IabLSetBounds(5,5,60,25);lab2=newLabeI(第个数字:);lab2.setBounds(5,35,60,25);lab3=newLabe1(第二个数字:);lab3.SetBounds(5,65,60,25);tfl=newTextField(IO);

4、tfl.setBounds(80,5,100,25);tf2=newTextField(IO);tf2.setBounds(80,35,100,25);tf3=newTextField(IO);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)

5、;text=newTextArea(200,50);text.setBounds(5,100,290,HO);q. add(labl);p.add(Iab2);p.add(Iab3);r. add(tf1);p.add(tf2);p.add(tf3);s. add(connection);p.add(send);t. add(text);add(p);SetVisible(true);socket=newSocket();thread=newThread(this);publicvoidactionPerformed(ActionEvente)if(e.getSource()=connecti

6、on)InetAddressaddress=null;InetSocketAdclresssocketAddress=null;try请求和效劳器建立套接字连接:if(socket.IsConnected()elseaddress=InetAddress,getByName(tf1.getText();socketddress=newInetSocketAddress(address,8755);socket,connect(socketAddress,2000);/*等待2秒中in=newDataInputStreani(socket,getInputStream();out=newData

7、OutputStreani(socket.getOutputStream();send.SetEnabled(true);JOptionPane.ShoWMeSSageDialog(this,连接成功!,成功!,JOptionPane.INFORMATION-MESSAGE);thread,start();catch(IOExceptionex)System,out.printIn(*timeout*+ex);System,out.printIn(socketAddress.getHostName()+:*+socketAddress.getPort();JOptionPane.ShowMes

8、sageDialogCthis,z*连接超时!,错误!,JOptionPane.ERRORJfESSAGE);newClient();dispose();if(e.getSource()=send)Strings=tf2.getText()+,+tf3.getTextO;if(s!=ull)tryout.WriteUTF(s);catch(IOExceptionel)publicvoidrunOStrings=null;while(true)trys=in.readUTF();text,append(s+n);catch(IOExceptione)text,append(与效劳器己断开);br

9、eak;publicstaticvoidmain(Stringargs)newClient();)2、客户端importjava.io.*;.*;importjava.util.*;publicclassServerpublicServer()ServerSocketserver=null;Serverthreadthread;Socketyou=null;while(true)tryserver=newServerSocket(8755);catch(IOExceptionel)System,out.Println(正在监听);/ServerSocket对象不能重复创立trySystem,o

10、ut.PrintIn(等待客户呼叫);you=server.accept();System.OUt.printIn(已连接到客户);System,out.PrintIn(客户的地址:+you.getInetAddressO);catch(IOExceptione)SySteni.out.println(正在等待客户);if(you!=null)newServerthread(you),start();/为每个客户启动一个专门的线程publicstaticvoidmain(Stringargs)newServer();classServer_threadextendsThreadSocketso

11、cket;DataOutputStreamout=null;DataInputStreamin=null;Strings=nu11;booleanquesion=false;Serverthread(Sockett)socket=t;tryout=newDataOutPUtStrecLm(socket,getOutputStream();in=newDataInputStream(socket,getInputStreamO);catch(IOExceptione)publicvoidrun()while(true)doublea=newdouble2;inti=0;trys=inreadUT

12、FO;/堵塞状态,除非读取到信息quesion=false;StringTokenizerfenxi=newStringTokenizer(s,);while(fenxi.hasMoreTokens()&quesion=false)Stringtemp=fenxi.nextToken();tryai=Double.valuef(temp).doubleValue();i+;catch(NumberFormatExceptione)out.WriteUTF(请输入数字字符);quesion=true;if(quesion=false)doubles=a0+al;doublep=a0-al;dou

13、bleq=a0*al;doubler=a0al;out.writeUTF(*+a0+*+al+*=*+s);out.writeUTF(*+a0+*-*+al*=*+p);out.writeUTF(*+a0+*+al+=+q);out.writeUTF(*+a0+al+=+r);System.OUt.println(客服端数据:+a0+和+al);System,out.PrintIn(完成客户端运算);catch(IOExceptione)System,out.Println(客户离开);return;四.测试数据与实验结果客户端程序运行结果链接效劳器客户端进行四种运算效劳器端的运行结果:1.J

14、aVa语言中,效劳器端和客户端套接字对象类相同吗?如不同,有何差异?答:不相同,客户端使用Socket,效劳器端使用ServerSocketo2 .程序编写完毕并编译后,先运行客户端程序,还是先运行效劳器端程序?为什么?答:先运行效劳器端,如果效劳器端不运行或后运行,客户端运行后无法与效劳器端建立连接,就不能用到效劳器端的效劳。3 .Java语言中如何使用UDP协议进行数据传输的?答:JaVa里UDP协议传送的方式细节已经封装了到类DatagramSOCket里,只要用DatagramSocket的对象进行传输数据就可以了,底层实现是应该依靠本地C语言程序来完成的实验体会通过这次试验让我更加深刻的体会和理解了从效劳端和客户端的联系和工作方式,稳固了传输层与套接字的根本知识,能够利用套接字实现面向连接的数据传输,学会简单的客户/效劳器程序的开发,希望在以后的学习中更多的去学习和实践关于客户端和效劳器东西。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 嵌入式开发

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

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