使用 UDP协议的 Socket 网络程序设计 java编程.doc
文本预览下载声明
实验四 使用 UDP协议的 Socket 网络程序设计
及实验步骤详解!!
实验目的:掌握 Socket 通讯机制,掌握 DataGramSocket 和 DataGramPacket类和相关方法。
实验要求:通过Socket 编程,掌握网络应用程序的开发方法;掌握利用Java提供的基本组件进行网络传输;掌握 Java 提供的多线程机制,异常处理机制和低层对协议的通信机制,通过 Socket 编程,掌握网络应用程序的开发方法。
1、
import .*;
public class DatagramPacketExa {
public static void main(String[] args) throws SocketException {
String s = This is a test.;
byte[] data = s.getBytes();
try {
InetAddress ia = InetAddress.getByName();
int port = 7;
SocketAddress sa=new InetSocketAddress(ia,port);
DatagramPacket dp = new DatagramPacket(data, data.length, ia, port);
DatagramPacket dp1= new DatagramPacket(data, data.length, sa);
System.out.println(This packet is addressed to:
+ dp.getAddress());
分别调用数据报dp的方法,
dp.getData(), dp.getOffset(), dp.getLength(),getLength().结果是什么?
}
catch (UnknownHostException e) {
System.err.println(e);
}
}
}
调试并输出结果。
2、编写一个能扫描出本地机所有udp端口的程序。
3、建立三个类,然后运行服务器端和客户端。当客户端启动后,服务器端得到客户端的地址和端口信息,同时客户端会收到客户端发送的reply信息。
类DataGramHelper
import .*;
public class DataGramHelper {
//定义一个数据包
① public StringtoDatagram(String s, InetAddress ip, int port) {
// 将String容纳到Byte数组里
② byte[] buf = byte[s.length() + 1];
// 调整编码
buf = s.getBytes();
// 返回构造对象
③ 选择一条语句插到横线空白处,注意要改造一下
DatagramPacket(byte[] buf, int length)
构建数据报包,接收length长度的包并放入buf。
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
构建数据报包,发送length长度的包到address指定的主机的port端口。
return new
}
public String DatagramtoString(DatagramPacket p)
{
return new String(p.getData(), 0, p.getLength());
}
}
客户端代码
import java.io.*;
import java.lang.*;
import .*;
public class UDPClient {
public static void main(String args[]) {
// UDP Socket
DatagramSocket udpCliSocket;
DatagramPacket udpSendPacket;
DatagramPacket udpReceivePacket;
// 定义报文的工具类
DataGramHelper datapacketHelper = new DataGramHelper();
// 报文字节数组
byte pack
显示全部