import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UpdSend {
public static void main(String[] args) {
try {
//这是发送的upd的socket,可以随便从哪个端口发送出去,不写入任何参数,表示系统会选取一个我们的应用程序没有占用的端口发送出去
DatagramSocket datagramSocket = new DatagramSocket();
//这是发送发的数据包,第三个参数指定发送到到哪个计算机(也就是指定指定的计算机的IP),第四个参数是发送那个端口,这里的IP和port必须要指定,要不然我不知道发送哪里去啊
String str = "I love you 我爱你";
//这里的第二个参数是发送的字节的长度,不是字符窜的长度,如果写的是字符窜的长度,英文下
DatagramPacket datagramPacket = new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("192.168.1.101"), 3000);
datagramSocket.send(datagramPacket);
datagramSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UpdReceived {
public static void main(String[] args) {
try {
//这里必须要指定socket的端口,不然我不知道是从哪个端口去接受数据
DatagramSocket datagramSocket = new DatagramSocket(3000);
byte[] buf = new byte[1024];
//这里是用datagrampacket接受发送过来的数据,所以不需要指定IP和port
DatagramPacket p = new DatagramPacket(buf, 1024);
datagramSocket.receive(p);
//这是得到接受过来的字节数组,其实就是上面的buf,也可以直接用上面的buf
byte [] b = p.getData();
//这是得到接受到的数据的真实长度
int len = p.getLength();
System.out.println(len);
//这是得到发送放的IP
String sendIP = p.getAddress().getHostAddress();
System.out.println(sendIP);
//这是得到发送发的端口号
int port = p.getPort();
System.out.println(port);
//这是打印出接收到的数据
System.out.println(new String(b,0, len ));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//注意:千万记得在测试的时候,应该首先运行接受端,然后再运行发送端