1.客户端
package com.zhao.hehe;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
public class demo2_send {
public demo2_send() {
}
/**1.send
* DatagramSocket 随机端口号,也可以在创建的时候添加地址,端口等
*
*DatagramPacket 指定数据 ,长度,地址,端口
*使用DatagramSocket发送DatagramPacket
*关闭DatagramSocket
*/
public static void main(String[] args) throws Exception {
DatagramSocket socket=new DatagramSocket(); //创建socket 相当于码头
Scanner sc=new Scanner(System.in);// 创建键盘录入对象
//String str="Hi,I'm socket "; //要发的字节
while (true) {
String line=sc.nextLine(); //获取键盘录入的字符串
if("quit".equals(line)){
break;
}
//创建packet ,相当于集装箱
DatagramPacket p=new DatagramPacket(line.getBytes(), line.getBytes().length, InetAddress.getByName("127.0.0.1"), 8008);
socket.send(p); //发货(发送消息)
}
socket.close();
System.out.println("----------------");
}
}
2.服务端
package com.zhao.hehe;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
/**
* @author 光头强
*
*/
public class demo2_Receive {
/**
2.Receive
* DatagramSocket 制定他要接受的端口号
*
*DatagramPacket 指定数据 ,长度,地址,端口
*使用DatagramSocket使用DatagramPacket接受
*关闭DatagramSocket
*/
public demo2_Receive() {
}
public static void main(String[] args) throws Exception {
DatagramSocket socket=new DatagramSocket(8008); //创建socket ,相当于接受的码头
DatagramPacket p=new DatagramPacket(new byte[1024], 1024); //创建pack ,相当于集装箱,里面参数 相当于一个1024byte大小的箱子,里面有1024个格子
while(true){
socket.receive(p);//接受数据,接货
byte[] arr=p.getData(); //获取p中的全部数据,包括空数据
int len=p.getLength(); //获取p中接受到的有效的字节个数
String ip=p.getAddress().getHostAddress();//获取ip地址
int port=p.getPort(); //获取端口号
//System.out.println(ip+"---------");
System.out.println(ip+":"+port+":"+(new String(arr,0,len)));//输出字符串 arr,从0开始len结束
}
//System.out.println("===================");
//socket.close();
}
}
3.效果图
