欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    套接字编程实验报告(共7页).docx

    • 资源ID:13518792       资源大小:60.50KB        全文页数:7页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    套接字编程实验报告(共7页).docx

    精选优质文档-倾情为你奉上Programing 实验物联2班 8 赵智慧一、 实验题目:利用套接字编程,编写出TCP和UDP的客户机、服务器程序进行交互二、 实验代码:1. TCP服务器:package TCP;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import .ServerSocket;import .Socket;public class TCPServer public static void main(String args) throws IOExceptionServerSocket server=new ServerSocket(7999);System.out.println("server ok");Socket socket=server.accept();BufferedReader bf=new BufferedReader(new InputStreamReader(socket.getInputStream();String str=bf.readLine();while(str!=null)System.out.println(str);str=bf.readLine();2. TCP客户机:package TCP;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import .Socket;import .UnknownHostException;public class TCPClient public static void main(String args) throws UnknownHostException, IOExceptionString sentence;InputStreamReader isr = new InputStreamReader(System.in);BufferedReader inFromUser = new BufferedReader(isr);Socket clientSocket = new Socket("127.0.0.1",7999);sentence = inFromUser.readLine(); OutputStream os = clientSocket.getOutputStream();PrintWriter oos=new PrintWriter(os);os.write(sentence.getBytes();clientSocket.close();3. UDP服务器:package UDP;import .DatagramPacket;import .DatagramSocket;import .InetAddress;import .SocketException;public class UDPServer public static void main(String args) throws ExceptionDatagramSocket serverSocket = new DatagramSocket(9876); /所有发送和接收的数据都将通过该套接字 /因为UDP无连接,所以无需创建一个新的套接字监听新的请求byte receive1 = new byte1024;byte receive2 = new byte1024;byte send1 = new byte1024;byte send2 = new byte1024;byte send3 = new byte1024;while(true)DatagramPacket receivePacket = new DatagramPacket(receive1, receive1.length);serverSocket.receive(receivePacket);String str = new String(receivePacket.getData(); /从分组中提取出数据,并存入str中InetAddress ip = receivePacket.getAddress(); /提取IP地址int port = receivePacket.getPort(); /提取客户机端口号String ask = "请选择:1.将其转化为大写 2.将a字符替换为c字符"send1 = ask.getBytes();DatagramPacket sendPacket1 = new DatagramPacket(send1, send1.length, ip,port);serverSocket.send(sendPacket1);DatagramPacket receivePacket2 = new DatagramPacket(receive2, receive2.length);serverSocket.receive(receivePacket2);String str2 = new String(receivePacket2.getData();if(str2.toCharArray()0='1')String capitalizedSentence = str.toUpperCase();send3 = capitalizedSentence.getBytes();DatagramPacket sendPacket3 = new DatagramPacket(send3, send3.length, ip,port);serverSocket.send(sendPacket3);else String change = str.replace('a', 'c'); send2 = change.getBytes(); DatagramPacket sendPacket2 = new DatagramPacket(send2, send2.length, ip,port); serverSocket.send(sendPacket2);4. 客户机:package UDP;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import .DatagramPacket;import .DatagramSocket;import .InetAddress;import .SocketException;import .UnknownHostException;public class UDPClient public static void main(String args) throws IOExceptionInputStreamReader isr = new InputStreamReader(System.in);BufferedReader inFromUser = new BufferedReader(isr);DatagramSocket clientSocket = new DatagramSocket(); /客户机套接字InetAddress IPAddress = InetAddress.getByName("127.0.0.1"); byte sendData1 = new byte1024;byte sendData2 = new byte1024;byte receiveData1 = new byte1024;byte receiveData2 = new byte1024;String sentence = inFromUser.readLine();sendData1 = sentence.getBytes();DatagramPacket sendPacket = new DatagramPacket(sendData1, sendData1.length,IPAddress,9876);clientSocket.send(sendPacket);DatagramPacket receivePacket1 = new DatagramPacket(receiveData1, receiveData1.length);clientSocket.receive(receivePacket1);String modifiedData1 = new String(receivePacket1.getData();System.out.println("Server:"+modifiedData1);String sentence2 = inFromUser.readLine();sendData2 = sentence2.getBytes();DatagramPacket sendPacket2 = new DatagramPacket(sendData2, sendData2.length,IPAddress,9876);clientSocket.send(sendPacket2);DatagramPacket receivePacket2 = new DatagramPacket(receiveData2, receiveData2.length);clientSocket.receive(receivePacket2);String modifiedData2 = new String(receivePacket2.getData();System.out.println("Server:"+modifiedData2);clientSocket.close();三、 实验分析:TCP提供可靠的数据传输,而UDP提供不可靠的运输服务,在套接字编程方面,UDP客户机使用的是DatagramSocket,而TCP客户机使用的是Socket。TCP实现:(1) 客户机从键盘输入读取一行字符,并通过套接字将该行发送到服务器(2) 服务器从其套接字读取一行数据(3) 服务器将来自客户机的数据打印出来UDP实现:(1) 客户机从其键盘输入读取一行字符,并通过套接字将该行发送到服务器(2) 服务器从其套接字读取一行数据(3) 服务器发送可供选择的操作信息发送给客户机(4) 客户机从其套接字读取来自服务器的信息,并将其选择通过套接字发送给服务器(5) 服务器通过套接字读取到客户机的选择,并根据是选择转换大小写还是选择替换字符来将修改后的行通过套接字发送给客户机(6) 客户机从其套接字中读取按照自己选择修改后的行,并打印显示出来四、 运行结果:TCP套接字:运行TCPServer 之后:再运行TCPClient:则TCPServer会显示:UDP套接字:五、问题思考:1. 在一台主机上安装编译用Java写的TCPClient和UDPClient程序,在另一台主机上安装编译TCPServer和UDPServer程序a. 如果你在运行TCPServer之前运行TCPClient,将发生什么现象,为什么?会报错,因为TCP是面向连接的传输,所以未开启服务器时先开启客户机不能通过三次握手建立连接,也就无法传输数据。b. 如果你在运行UDPServer之前运行UDPClient,将发生什么现象,为什么?没什么变化,因为UDP是无连接的,先开启服务器还是客户机都没有影响。c. 如果对客户端和服务器使用了不同的端口,将发生什么现象?不影响数据传输。2假定在UDPClient.java中,我们使用 DatagramSocket clientSocket = new DatagramSocket( 5432 ); 代替 DatagramSocket clientSocket = new DatagramSocket(); 在UDPServer.java中是否有必要进行修改?UDPClient和UDPServer中的套接字端口号是多少?在变化之前是多少?  没必要修改,UDPClient的 套接字端口是系统随机分配的端口号,而服务器端口号则是程序中设定的,不会发生变化六、实验心得:通过这个实验对Socket套接字更为了解了,也更清楚了UDP和TCP之间的差别所在,在UDP客户机和服务器交互过程中我特意设置了一个稍微复杂的交互过程,旨在更为了解数据通过套接字的传输,根据客户机的选择,服务器来提供不同的响应。实验还是学到了很多,也可以顺便巩固Java语言输入输出流的知识。专心-专注-专业

    注意事项

    本文(套接字编程实验报告(共7页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开