网络编程
/* 发送方 */
public static void main(String[] args) throws IOException {
// 创建发送端Socket对象(DatagramSocet)
DatagramSocket socket = new DatagramSocket();
// 创建要发送数据
byte[] bys = "hello,UDP,我来了".getBytes();
// 创建数据,并把数据打包
// DatagramPacket(byte[] buf, int length, InetAddress address, int po
// 构造一个数据包,发送长度为 length的数据包到指定主机上的指定端口号。
DatagramPacket dp =
new DatagramPacket(bys,
bys.length,
InetAddress.getByName("127.0.0.1"),
12345);
// 释放资源
socket.send(dp);
socket.close();
}
/* 接收方 */
public class ReceiveDemo {
public static void main(String[] args) throws IOException {
//接收端和发送端端口号必须一致
DatagramSocket ds=new DatagramSocket(12345);
while (true){
//创建一个数据包
byte[] bys=new byte[1024];
DatagramPacket dp=new DatagramPacket(bys,bys.length);
//调用DatagramSocket对象方法接收
ds.receive(dp);
//解析数据包,并把数据在控制台显示输出
System.out.println("数据是:"+new String(dp.getData()));
}
}
/* 客户端:发送数据,接受服务器反馈 */
public static void main(String[] args) throws IOException {
System.out.println("客户端发送数据");
// 1.Socket(ip,port)确定连接到哪里
Socket socket = new Socket("localhost",6666);
// 2.获取流对象,输出流
OutputStream os = socket.getOutputStream();
// 3.组装数据
os.write("你好 TCP,我来了".getBytes());
System.out.println("========接收并回写==========");
// 4.通过Socket,获取输入流对象
InputStream in = socket.getInputStream();
// 5.读写数据
byte[] b = new byte[100];
int len = in.read(b);
System.out.println(new String(b,0,len));
// 6.关闭资源
in.close();
os.close();
socket.close();
}
/* 服务器:收到消息后给出反馈 */
public static void main(String[] args) throws IOException {
System.out.println("服务器端启动,等待连接.....");
// 1.创建ServerSocket对象,绑定端口,开始等待连接
ServerSocket ss=new ServerSocket(6666);
// 2.接收accept方法,返回的是Socket对象
Socket serverSocket=ss.accept();
// 3.通过socket获取输入流
InputStream is=serverSocket.getInputStream();
// 4.一次性读取数据
// 4.1创建了字节数组
byte[] b=new byte[1024];
// 4.2 将数据读取到字节数组中
int len=is.read(b);
// 4.3 解析数组,打印字符串信息
String msg=new String(b,0,len);
System.out.println(msg);
System.out.println("===========回写数据==============");
// 5 通过socket获取输出流
OutputStream out= serverSocket.getOutputStream();
// 6.回写数据
out.write("我很好,谢谢你".getBytes());
// 7.关闭资源
is.close();
ss.close();
}