62,614
社区成员
发帖
与我相关
我的任务
分享
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class myDatagramSocket extends DatagramSocket {
final int max_len=1000;
public myDatagramSocket(int myport) throws SocketException {
super(myport);
}
public void sendMessage(InetAddress receiverAddr,int receiverPort,String message){
byte[] buffer=new byte[max_len];
buffer=message.getBytes();
DatagramPacket mypacket=new DatagramPacket(buffer,max_len,receiverAddr,receiverPort );
try {
this.send(mypacket);
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public String receiveMessage(){
byte[] buffer=new byte[max_len];
DatagramPacket mypacket=new DatagramPacket(buffer, max_len);
try {
this.receive(mypacket);
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
String message=new String(buffer);
return message;
}
}
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class Example2SenderReceiver {
public static void main(String[] arg){
if(arg.length!=4){
System.out.println("此程序需要输入四个命令参数");
return;
}else{
try {
InetAddress addr=InetAddress.getByName(arg[0]);
int myport=Integer.parseInt(arg[1]);
int receiverPort=Integer.parseInt(arg[2]);
String message=arg[3];
myDatagramSocket mysocket=new myDatagramSocket(myport);
mysocket.sendMessage(addr,receiverPort,message);
System.out.println(mysocket.receiveMessage());
mysocket.close();
} catch (UnknownHostException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (SocketException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class Example2ReceiverSender {
public static void main(String[] arg){
if(arg.length!=4){
System.out.println("此程序需要输入四个命令参数");
return;
}else{
try {
InetAddress addr=InetAddress.getByName(arg[0]);
int myport=Integer.parseInt(arg[1]);
int receiverPort=Integer.parseInt(arg[2]);
String message=arg[3];
myDatagramSocket mysocket=new myDatagramSocket(myport);
System.out.println(mysocket.receiveMessage());
mysocket.sendMessage(addr, receiverPort, message);
mysocket.close();
} catch (UnknownHostException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (SocketException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
Exception in thread "main" java.lang.IllegalArgumentException: illegal length or offset
at java.net.DatagramPacket.setData(Unknown Source)
at java.net.DatagramPacket.<init>(Unknown Source)
at java.net.DatagramPacket.<init>(Unknown Source)
at myDatagramSocket.sendMessage(myDatagramSocket.java:16)
at Example2SenderReceiver.main(Example2SenderReceiver.java:19)