文件可以编译通过但在网页中不能显示结果
服务端
import java.awt.*; 
import java.awt.event.*; 
import java.net.*; 
import java.io.*; 
 public class UdpServer extends WindowAdapter implements ActionListener,KeyListener 

  TextField tf1;             //发送文本框 
  Label t1;                 //发送消息提示 
  TextArea ta1;             //消息显示框 
  Button b1,b2;             //功能按钮 
  Panel p1;                 //面板 
 
  String hostname;     //客户机名 
  DatagramSocket receiveSocket,sendSocket; 
  DatagramPacket receivePacket,sendPacket;//设置接收数据包和发、发送数据包。。 
 
  public void display(){ 
    Frame f=new Frame("服务器"); 
 
    f.setSize(350,300);             //设置窗口大小 
    f.setLocation(200,200);           //设置窗口初始位置 
    f.setBackground(Color.decode("#8f8fff")); 
 
    p1=new Panel(); 
    f.add(p1,"South"); 
 
    ta1=new TextArea();     //创建文本区 
    ta1.setSize(100,250); 
    ta1.setBackground(Color.decode("#00cfff")); 
    ta1.setEditable(false); 
    f.add(ta1); 
 
    t1=new Label("发送消息"); 
    p1.add(t1); 
 
    tf1=new TextField(15); 
    p1.add(tf1); 
    tf1.addKeyListener(this); 
 
    b1=new Button("发送");         //创建按钮 
    p1.add(b1); 
    b1.setBackground(Color.WHITE); 
    b1.addActionListener(this); 
 
    b2=new Button("退出");         //创建按钮 
    p1.add(b2); 
    b2.setBackground(Color.WHITE); 
    b2.addActionListener(this); 
 
    f.addWindowListener(this);   //为框架f注册事件监听程序 
    f.setVisible(true);         //显示框架 
 
    try////设置服务器发送端口 
    { 
      sendSocket=new DatagramSocket(7000); 
    } 
    catch(Exception e) 
    { 
      ta1.append(e+"\n"); 
    } 
  } 
 
  public void receiveMessage(){     //接收数据包并显示 
    try 
    { 
      receiveSocket=new DatagramSocket(5566);//建立端口号为5566的DatagramSocket对象 
      byte[] buf=null;//new byte[500]; 
      receivePacket= null;//new DatagramPacket(buf,buf.length);//建立DatagramPacket对象 
      while(true) 
      { 
        buf=new byte[500]; 
        receivePacket=new DatagramPacket(buf,buf.length);//建立DatagramPacket对象 
          receiveSocket.receive(receivePacket);//接收数据包 
          if(receivePacket.getLength()==0) 
          { 
          System.out.println("消息为空"); 
          continue; 
          } 
          //使用来自于Java I/O包的类,在字节数组和其他流类型或读取器之间转换。 
          ByteArrayInputStream bin = new ByteArrayInputStream (receivePacket.getData()); 
          BufferedReader reader=new BufferedReader(new InputStreamReader(bin)); 
          ta1.append("客户端:"+reader.readLine()); 
          ta1.append("\n"); 
          reader.close(); 
          bin.close(); 
      } 
    } 
    catch(Exception e) 
    { 
      ta1.append(e+"\n"); 
    } 
  } 
 
  public void sendMessage(){ 
    try 
    { 
      String s=tf1.getText(); 
      tf1.setText(""); 
      ta1.append("服务器:"+s+"\n"); 
 
      ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    PrintStream pout = new PrintStream(out); 
    pout.print(s); 
    byte buf[] = out.toByteArray(); 
      //指定数据包、数据包长度、目的地址、端口号 
      sendPacket=new DatagramPacket(buf,buf.length,InetAddress.getByName(hostname),5678); 
      sendSocket.send(sendPacket);//发送数据包 
      buf=null; 
 
    } 
    catch(Exception err) 
    { 
      ta1.append(err+"\n"); 
    } 
  } 
 
  public void actionPerformed(ActionEvent e){ 
  //实现ActionListener接口中的方法 
    if(e.getSource()==b1) 
    { 
      sendMessage(); 
    } 
    if(e.getSource()==b2) 
    { 
      System.exit(0); 
    } 
  } 
 
  public void windowClosing(WindowEvent e){ 
    //单击窗口关闭按钮时产生该事件 
    System.exit(0);     //结束程序运行,关闭窗口 
  } 
 
  public void keyPressed(KeyEvent e) { 
    //文本行中单击Enter键时触发 
    if(e.getSource()==tf1) 
    { 
      if(e.getKeyChar()==KeyEvent.VK_ENTER) 
      { 
          sendMessage();//发送数据包 
      } 
    } 
  } 
 
  public static void main(String arg[]){ 
    UdpServer application=new UdpServer(); 
    application.display(); 
    application.receiveMessage(); 
  } 
 
  public void keyTyped(KeyEvent e) { 
    // TODO 自动生成方法存根 
 
  } 
  public void keyReleased(KeyEvent e) { 
    // TODO 自动生成方法存根 
 
  } 
}
客户端
import java.awt.*; 
import java.awt.event.*; 
import java.net.*; 
import java.io.*; 
 
public class UdpClient extends WindowAdapter implements ActionListener,KeyListener 

  TextField tf1; 
  Label t1; 
  TextArea ta1; 
  Button b1,b2; 
  Panel p1; 
 
  String hostname;     //客户机名 
  DatagramSocket receiveSocket,sendSocket; 
  DatagramPacket receivePacket,sendPacket;//设置接收数据包和发、发送数据包。。 
 
  public void display() 
  { 
    Frame f=new Frame("客户机"); 
 
    f.setSize(350,300);             //设置窗口大小 
    f.setLocation(200,200);           //设置窗口初始位置 
    f.setBackground(Color.decode("#8f8fff")); 
 
    p1=new Panel(); 
    f.add(p1,"South"); 
 
    ta1=new TextArea();     //创建文本区 
    ta1.setSize(100,250); 
    ta1.setBackground(Color.decode("#00cfff")); 
    ta1.setEditable(false); 
    f.add(ta1); 
 
    t1=new Label("发送消息"); 
    p1.add(t1); 
 
    tf1=new TextField(15); 
    p1.add(tf1); 
    tf1.addKeyListener(this); 
 
    b1=new Button("发送");         //创建按钮 
    p1.add(b1); 
    b1.setBackground(Color.WHITE); 
    b1.addActionListener(this); 
 
    b2=new Button("退出");         //创建按钮 
    p1.add(b2); 
    b2.setBackground(Color.WHITE); 
    b2.addActionListener(this); 
 
    f.addWindowListener(this);   //为框架f注册事件监听程序 
    f.setVisible(true);         //显示框架 
 
 
    try/////设置客户端发送端口 
    { 
      sendSocket=new DatagramSocket(5000); 
    } 
    catch(IOException e) 
    { 
      ta1.append(e+"\n"); 
    } 
 
  } 
 
  public void receiveMessage(){     ///接收数据包并显示 
    try 
    { 
      receiveSocket=new DatagramSocket(5678);//建立端口号为5678的DatagramSocket对象 
      byte[] buf=new byte[500]; 
      receivePacket=new DatagramPacket(buf,buf.length);//建立DatagramPacket对象 
      while(true) 
      { 
          receiveSocket.receive(receivePacket);//接收数据包 
 
          ByteArrayInputStream bin = new ByteArrayInputStream (receivePacket.getData()); 
          BufferedReader reader=new BufferedReader(new InputStreamReader(bin)); 
 
          ta1.append("服务器消息:"+reader.readLine()); 
          ta1.append("\n"); 
      } 
 
    } 
    catch(Exception e) 
    { 
      ta1.append(e+"\n"); 
    } 
  } 
 
  public void sendMessage(){ 
    try 
    { 
 
 
 
      ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
    PrintStream pout = new PrintStream(bout); 
    pout.print(tf1.getText()); 
    byte buf[] = bout.toByteArray(); 
 
    sendPacket=new DatagramPacket(buf,buf.length,InetAddress.getByName("localhost"),5566); 
    // if(buf.length!=0) 
    //{ 
      sendSocket.send(sendPacket); //发送数据包 
      ta1.append("客户端:"+tf1.getText()+"\n"); 
      tf1.setText(""); 
  //   } 
 
 
    } 
    catch(IOException err) 
    { 
      ta1.append(err+"\n"); 
    } 
  } 
 
  public void actionPerformed(ActionEvent e) 
  {//实现ActionListener接口中的方法 
    if(e.getSource()==b1) 
    { 
        sendMessage();//发送数据包 
    } 
    if(e.getSource()==b2) 
    { 
      System.exit(0); 
    } 
  } 
 
  public void windowClosing(WindowEvent e) 
  {//单击窗口关闭按钮时产生该事件 
    System.exit(0);     //结束程序运行,关闭窗口 
  } 
 
  public void keyPressed(KeyEvent e) { 
    if(e.getSource()==tf1) 
    { 
      if(e.getKeyChar()==KeyEvent.VK_ENTER) 
      { 
          sendMessage();//发送数据包 
      } 
    } 
  } 
 
  public static void main(String arg[]) 
  { 
    UdpClient c=new UdpClient(); 
    c.display(); 
    c.receiveMessage(); 
  } 
  public void keyTyped(KeyEvent e) { 
    // TODO 自动生成方法存根 
 
  } 
  public void keyReleased(KeyEvent e) { 
    // TODO 自动生成方法存根 
 
  } 
}

解决方案 »

  1.   

    网页上显示?这个又不是Web程序,怎么可能在网页上显示呢?
      

  2.   

    怎么解决?1楼说了啊,网页里面没办法让你这个程序起作用,你自己也写了main方法,想怎么用?关于在网页中这方面的应用,楼主可以看看applet的相关资料,把你的程序作为一个applet部署在网页中倒是可以