文件可以编译通过但在网页中不能显示结果
服务端
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 自动生成方法存根
}
}
服务端
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 自动生成方法存根
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货