作业:
1. 使用UDP协议编写一个网络程序,设置接收端程序的监听端口是8001,发送端发送的数据是“Hello, world”。
package udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPSend {
public static void main(String[] args) throws Exception {
//创建 DatagramSocket对象
DatagramSocket ds = new DatagramSocket(3000);
String str = "hello world";//要发送的数据
//创建一个要发送的数据包,包括数据的内容、长度、发送的IP地址和端口号
DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(),
InetAddress.getByName("localhost"), 8001);
System.out.println("发送信息");
ds.send(dp); //发送信息
ds.close(); //释放资源
}
}
package udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPReceiver {
public static void main(String[] args) throws Exception {
//创建一个长度为1024的字节数组,用于接收数据
byte[] buf = new byte[1024];
//创建一个DatagramSocket对象,监听端口号为8001
DatagramSocket ds = new DatagramSocket(8001);
//创建一个DatagramPacket对象,用于接受数据
DatagramPacket dp = new DatagramPacket(buf, 1024);
System.out.println("等待接收数据");
//等待接收数据,如果没有数据则会阻塞
ds.receive(dp);
//调用DatagramPacket的方法接收到的信息,包括数据的内容、长度、发送的IP地址和端口号
String str = new String(dp.getData(),0, dp.getLength());
System.out.println(str); //打印接收到的信息
ds.close(); //释放资源
}
}
2. 使用TCP协议编写一个网络程序,设置服务器端的监听端口是8002,当与客户端建立连接后,服务器端向客户端发送数据“Hello, world”,客户端收到数据后打印输出。
package tcp;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) throws Exception{
//创建ServerSocket对象,端口号为8002
ServerSocket serverSocket = new ServerSocket(8002);
//调用accept()方法等待客户端连接,当与客户端连接后,调用Socket的getOutputStream()方法获得输出流对象,输出“hello world。
Socket client = serverSocket.accept();
//获取客户端的输出流
OutputStream os = client.getOutputStream();
os.write(("hello world").getBytes());
os.close();
client.close();
}
}
package tcp;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPClient {
public static void main(String[] args) throws UnknownHostException, IOException {
byte[] buf = new byte[1024];//创建一个长度为1024的字节数组,用于接收数据
//指定服务器的IP地址和监听端口号,与服务器端建立连接后
Socket client = new Socket(InetAddress.getLocalHost(), 8002);
//调用Socket的getInputStream()方法获得输入流对象,读取数据,并打印出来
InputStream is = client.getInputStream();
int len = is.read(buf);
System.out.println(new String(buf, 0, len));
client.close();
}
}