实验14 Java网络编程
一、实验目的
了解网络编程的概念,了解URL通信、Socket通信和UDP通信的基本知识。
二、实验要求
1.掌握网络编程的基本概念,如客户机、服务器、协议、端口。
2.掌握https://www.wendangku.net/doc/bb11662319.html,包中常用的网络编程工具类的功能和使用。
3.掌握Applet获取网络资源的方法。
4.掌握流式Socket服务器和客户机编程的基本概念和方法。
三、实验内容
1.测试下列程序,查看运行结果,再修改为浙江财经学院网址。
package urlpack;
import java.io.*;
import https://www.wendangku.net/doc/bb11662319.html,.*;
public class TestURL {
public static void main(String[] args) {
int n;
byte[] b = new byte[100];
StringBuffer area = new StringBuffer();
URL url = null;
InputStream in = null;
try {
url = new URL("https://www.wendangku.net/doc/bb11662319.html,");
in = url.openStream();
while ((n = in.read(b)) != -1) {
String s = new String(b, 0, n);
area.append(s);
}
} catch (IOException e) {
System.out.println(e);
}
System.out.println(area);
}
}
2. 测试下列程序,查看运行结果(编写接收用户输入的一个主机名,通过网络找的其IP地址打印到屏幕上)
import java.io.*;
import https://www.wendangku.net/doc/bb11662319.html,.*;
import java.util.*;
public class InetAddressText {
public static void main(String[] args) {
InetAddress iad = null;
Scanner sc = new Scanner(System.in);
System.out.print("输入网站域名:");
String s = sc.nextLine();
try {
iad = InetAddress.getByName(s);
System.out.println("网站地址:" + iad.getHostAddress());
System.out.println("网站域名:" + iad.getHostName());
System.out.println("本地域名及地址:" +
InetAddress.getLocalHost());
} catch (UnknownHostException e) {
System.out.println(e);
}
}
}
3.利用Socket套接字通信机制模拟简单的聊天程序。测试方法:先两人一组,一个服务器端,另一人客户端;然后反之;最后,在一台机器上自己模拟两方聊天。提示:聊天程序输入、输出流最好用字符流。
4. 基于UDP数据报方式发送及接受信件。参考程序如下:
//1.接收端程序
package udppack;
import https://www.wendangku.net/doc/bb11662319.html,.*;
public class Recevier {
public static void main(String[] args) {
byte buffer[] = new byte[512];
DatagramPacket pack = null;
DatagramSocket mail_data = null;
try {
mail_data = new DatagramSocket(8888);
} catch (Exception e) {
}
pack = new DatagramPacket(buffer, buffer.length);
while (mail_data != null) {
try {
mail_data.receive(pack);
System.out.print("收到数据长度:" + pack.getLength());
System.out.println("\t收到数据来自:"+ pack.getAddress() + "\t端口:"+ pack.getPort());
String message = new String(pack.getData(), 0,
pack.getLength());
System.out.println("收到数据是:\n" + message);
} catch (Exception e) {
}
}
}
//2.发送端程序
package udppack;
import https://www.wendangku.net/doc/bb11662319.html,.*;
import java.io.*;
public class Sender {
public static void main(String[] args) {
byte buffer[] = new byte[512];
int port = 8888;
DatagramPacket data_pack = null;
DatagramSocket mail_data = null;
try {
InetAddress address = InetAddress.getByName("127.0.0.1");
System.out.println("数据报目标主机地址:" + address + " 数据报目标端口是:" + port);
mail_data = new DatagramSocket();
FileInputStream fin = new FileInputStream("c:/kk.html");
int n = 0;
while ((n = fin.read(buffer)) != -1) {
System.out.println("发送包");
data_pack = new DatagramPacket(buffer, n, address, 8888);
mail_data.send(data_pack);
}
} catch (Exception e) {
}
}
}