柯侧耳倾听者 - 云代码空间
—— 翱翔在Java世界的海洋之上
一、实验目的 1、理解UDP协议的特点,熟悉客户机与服务器的通信原理。 2、掌握DatagramSocket类和DatagramPacket类的使用以及UDP报文的发送和接收,学会基于UDP数据报套接字的网络程序设计方法。
二、预习内容及要求(要求写出预习内容) 1、掌握不同类型的输入输出流类,标准数据流、文件流、数据输入输出流、对象流等。 2、编程时,应考虑异常处理。
三、实验内容、操作过程及实验结果记录 实验题 阅读并运行下列服务器和客户机程序实例,分析其运行结果。要求画出Server和Client的流程图,并画出双方通信的过程。 (1)服务器程序实例源代码:UDPServer.java import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPServer { public static void main(String[] args) throws IOException { DatagramSocket socket=new DatagramSocket(8800); byte[] data =new byte[1024]; DatagramPacket packet=new DatagramPacket(data, data.length); System.out.println("****服务器端已经启动,等待客户端发送数据"); socket.receive(packet); String info=new String(data, 0, packet.getLength()); System.out.println("我是服务器,客户端说:"+info); InetAddress address=packet.getAddress(); int port=packet.getPort(); byte[] data2="欢迎您!".getBytes(); DatagramPacket packet2=new DatagramPacket(data2, data2.length, address, port); socket.send(packet2); socket.close(); } }
(2)客户机程序实例源代码:UDPClient.java import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; public class UDPClient { public static void main(String[] args) throws IOException { InetAddress address=InetAddress.getByName("localhost"); int port=8800; byte[] data="用户名:admin;密码:123".getBytes(); DatagramPacket packet=new DatagramPacket(data, data.length, address, port); DatagramSocket socket=new DatagramSocket(); socket.send(packet); byte[] data2=new byte[1024]; DatagramPacket packet2=new DatagramPacket(data2, data2.length); socket.receive(packet2); String reply=new String(data2, 0, packet2.getLength()); System.out.println("我是客户端,服务器说:"+reply); socket.close(); } }
四、实验过程中所遇问题思考与讨论(可写个人体会,或相关理论知识,根据个人具体情况选做) 通过这次的学习与实验,我初步掌握了网络编程中UDP数据报套接字编程的一些用法和问题,也更加了解了网络编程中UDP数据报套接字编程的概念,为今后更好的学习网络编程做好铺垫,在学习的过程中,我更加深刻的体会到与老师和同学间的交流与合作是多么的重要,所以在今后的学习与实验当中,要善于发现问题,更要及时与老师反馈问题所在,并与老师和同学交流学习经验,共同解决问题,这样才能更好的学好网络编程。
|