求救!java问题!!紧急!!

sigu199011 2011-07-05 08:10:13
网络设计:要求利用JAVA实现UDP协议的基本功能 ,UDP,不能保证数据包接受的可靠性和接受的先后次序。最好能实现像传送数据,接收有些乱序,有丢失的数据,能统计丢失率。图形化更好,时间紧急,希望各路大侠相救!
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sigu199011 2011-07-08
  • 打赏
  • 举报
回复
无言。
sigu199011 2011-07-08
  • 打赏
  • 举报
回复
算了,不问了
sigu199011 2011-07-06
  • 打赏
  • 举报
回复
怎么就没人帮呀?说点思路也行啊?
import java.io.*;
import java.net.*;
public class UDPEchoServer {
private static final int ECHOMAX=255;
public static void main(String[] args)throws IOException{
if(args.length!=1){
throw new IllegalArgumentException("Parameter(s):<Port>"); }
int servPort=Integer.parseInt(args[0]);
DatagramSocket socket=new DatagramSocket(servPort);
DatagramPacket packet=new DatagramPacket(new byte[ECHOMAX],ECHOMAX);
while(true){
socket.receive(packet);
packet.setLength(ECHOMAX);
}}}
提示出错:Exception in thread "main" java.lang.IllegalArgumentException: Parameter(s):<Port>
at UDPEchoServer.main(UDPEchoServer.java:7)
这是服务端,客户端也类似,但这个代码就说参数不正确,请大家赐教!
飞跃颠峰 2011-07-06
  • 打赏
  • 举报
回复
1楼正解 楼主好运
sigu199011 2011-07-06
  • 打赏
  • 举报
回复
哦,谢谢楼上的,不过我想在eclipse中运行,不在cmd中运行行吗?但是在eclipse中根本运行不了,就出现上面错误,这是我的客户端,也运行不了,
public class UDPEchoClientTimeout {
private static final int TIMEOUT=1000;
private static final int MAXTRIES=5;
public static void main(String[] args)throws IOException{
if((args.length<2)||(args.length>3)){
throw new IllegalArgumentException("Parameter(s):<Server><Word>[<Port>]"); }
InetAddress serverAddress =InetAddress.getByName(args[0]);
byte[] bytesTosend=args[1].getBytes();
int servPort=(args.length==3)?Integer.parseInt(args[2]):9;
DatagramSocket socket=new DatagramSocket();
socket.setSoTimeout(TIMEOUT);
DatagramPacket sendPacket=new DatagramPacket(bytesTosend, bytesTosend.length,serverAddress,servPort);
DatagramPacket receivePacket=new DatagramPacket(new byte[bytesTosend.length],bytesTosend.length);
int tries=0;
boolean receivedResponse=false;
do{ socket.send(sendPacket);
try{
socket.receive(receivePacket);
if(!receivePacket.getAddress().equals(serverAddress)){
throw new IOException("Received packet from an unknown source"); }
receivedResponse=true;
} catch(InterruptedIOException e){
tries+=1;
System.out.println("Timed out,"+(MAXTRIES-tries)+"more tries...");
}
}while((!receivedResponse)&&(tries<MAXTRIES));
if(receivedResponse){
System.out.println("Recetived:"+new String(receivePacket.getData()));
}else{System.out.println("No response--giving up");}
socket.close();
}
}
我直接在myeclipse中用java application运行,都没有让我带参数的机会啊,我是在一台机器上运行的,是不是我没有传送数据啊,我不知道在哪儿传?那个args.length怎么来的呢?是不是整个程序仅仅是个框架,还要自己添东西?这也是我在参考书上找的代码,我不知道怎么改???我对java网络编程懂得不多,见笑了,希望进一步指教!!心急.

飞跃颠峰 2011-07-06
  • 打赏
  • 举报
回复
if(args.length!=1){
throw new IllegalArgumentException("Parameter(s):<Port>"); }

你的条件里已经说明了,抛出错误的原因是args.length!=1
也就是你执行程序的时候所带参数不是1个(0个或2个及更多)

你执行的时候带个参数,比如:
java UDPEchoServer 1111
就不会抛这个错了
TKD03072010 2011-07-05
  • 打赏
  • 举报
回复
又见作业贴...
自己动手
丰衣足食

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧