服务端
public class UDPReceive {
private static final int PORT = 5000;
private DatagramSocket socket;
private DatagramPacket packet;
private byte bytes[];
private String receiveStr;
public UDPReceive (){
init();
}
public void init(){
socket=new DatagramSocket(port);
bytes=new byte[1024];
packet=new DatagramPacket(bytes,bytes.length());
receiveStr = "";
int i = 0;
while(i==0){
socket.receive(packet);
i=packet.getlength();
if(i>0)
{
receiveStr=new String(bytes,0,packet.getlength());
i=0;
}
}
}
}
客户端
主要代码
socket=new DatagramSocket(port+1);
str="ni";
bytes=str.getBytes();
packet=new DatagramPacket(bytes,bytes.length().地址,端口);
socket.send(packet);
package com.eastcom.sspm.monitor;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPReceive {
private static final int PORT = 5000;
private DatagramSocket dataSocket;
private DatagramPacket dataPacket;
private byte receiveByte[];
private String receiveStr;
public UDPReceive() {
Init();
}
public void Init() {
try {
dataSocket = new DatagramSocket(PORT);
receiveByte = new byte[1024];
dataPacket = new DatagramPacket(receiveByte, receiveByte.length);
receiveStr = "";
int i = 0;
while (i == 0)// 无数据,则循环
{
dataSocket.receive(dataPacket);
i = dataPacket.getLength();
// 接收数据
if (i > 0) {
// 指定接收到数据的长度,可使接收数据正常显示,开始时很容易忽略这一点
receiveStr = new String(receiveByte, 0,
dataPacket.getLength());
System.out.println(receiveStr);
i = 0;// 循环接收
}
// int port = dataPacket.getPort();
// InetAddress addr = dataPacket.getAddress();
// String sendStr = "Hello ! I'm Server";
// byte[] sendBuf;
// sendBuf = sendStr.getBytes();
// DatagramPacket sendPacket
// = new DatagramPacket(sendBuf , sendBuf.length , addr , port );
// dataSocket.send(sendPacket);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
new UDPReceive();
}
}
package com.eastcom.sspm.monitor;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPClient {
private static final int PORT = 5000;
private DatagramSocket dataSocket;
private DatagramPacket dataPacket;
private byte sendDataByte[];
private String sendStr;
public UDPClient(String listStatus) {
Init(listStatus);
}
public void Init(String listStatus) {
try {
// 指定端口号,避免与其他应用程序发生冲突
dataSocket = new DatagramSocket(PORT + 1);
sendDataByte = new byte[1024];
sendStr = "UDP方式发送数据";
sendDataByte = sendStr.getBytes();
dataPacket = new DatagramPacket(sendDataByte, sendDataByte.length,
InetAddress.getByName("localhost"), PORT);
dataSocket.send(dataPacket);
byte[] recvBuf = new byte[100];
DatagramPacket recvPacket
= new DatagramPacket(recvBuf , recvBuf.length);
dataSocket.receive(recvPacket);
String recvStr = new String(recvPacket.getData() , 0 ,recvPacket.getLength());
System.out.println("收到:" + recvStr);
dataSocket.close();
} catch (SocketException se) {
se.printStackTrace();
} catch (IOException ie) {
ie.printStackTrace();
}
}
public static void main(String args[]) {
new UDPClient("1");
}
}
log4j基本使用四个日志级别,error,warn,info,debug.日志只打印高于或等于设定的日志级别的日志。
int不能用toString Interger可以