只指定数据包要发送的端口,怎么接收不了? java 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有点长,代码如下:import java.awt.*;import java.awt.event.*;import java.net.*;public class Chat extends Frame{ private List list=null; private Panel panel=null; private TextField tfIp=null,tfData=null; private DatagramSocket ds=null; public Chat() { try { ds=new DatagramSocket();/ /这里如果不加端口号,为什么就接收不了, 我想问发送不是已经指定数据包的地址和端口了吗? } catch(Exception e) { e.printStackTrace(); } setTitle("聊天室"); setBounds(300,150,300,400); init(); setVisible(true); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { ds.close(); dispose(); System.exit(0); } } ); } public void init() { list=new List(6); add(list,"Center"); panel=new Panel(); panel.setLayout(new BorderLayout()); tfIp=new TextField(15); tfData=new TextField(18); new Thread(new Runnable() { public void run() { byte buf=new byte; DatagramPacket dp=new DatagramPacket(buf,buf.length); while(true) { try { ds.receive(dp); String message=new String(buf,0,dp.getLength()); message+="from"+dp.getAddress().getHostAddress()+":"+dp.getPort(); list.add(message,0); } catch(Exception ex) { if(!ds.isClosed()) ex.printStackTrace(); } } } }).start(); tfData.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String strIp=tfIp.getText().toString(); String strData=tfData.getText().toString(); try { DatagramPacket dp=new DatagramPacket(strData.getBytes(),strData.getBytes().length,InetAddress.getByName(strIp),1029); ds.send(dp); } catch(Exception ex) { ex.printStackTrace(); } tfIp.setText(""); tfData.setText(""); } } ); panel.add(tfIp,"West"); panel.add(tfData,"East"); add(panel,"South"); } public static void main(String args) { new Chat(); }} 如何使用正则式格式化文件路径 在线等高手,高手,如何用Java验证当前用户的Windows,XP,登陆密码? 求救:关于Java自动输入的问题(万分紧急!) 关于Java Web Start 请教高手!(关于树里鼠标拖动)(在线等) 怎么调用的? 简单语法错误,但百思不得其解。。。。。高手请进! 如何将字符串转换为数值?简单吧?(在线。。。。。) 我是初学者,该用什么java的“编译器”???? java贪吃蛇的问题,求教无论怎么修改身体就只有一个矩形,纠结了好久 swing问题,如何选中一个对象,在线等答复 关于constructor的问题
import java.awt.*;
import java.awt.event.*;
import java.net.*;public class Chat extends Frame{
private List list=null;
private Panel panel=null;
private TextField tfIp=null,tfData=null;
private DatagramSocket ds=null;
public Chat()
{
try
{
ds=new DatagramSocket();/ /这里如果不加端口号,为什么就接收不了,
我想问发送不是已经指定数据包的地址和端口了吗?
}
catch(Exception e)
{
e.printStackTrace();
}
setTitle("聊天室");
setBounds(300,150,300,400);
init();
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
ds.close();
dispose();
System.exit(0);
}
}
);
}
public void init()
{
list=new List(6);
add(list,"Center");
panel=new Panel();
panel.setLayout(new BorderLayout());
tfIp=new TextField(15);
tfData=new TextField(18);
new Thread(new Runnable()
{
public void run()
{
byte buf=new byte;
DatagramPacket dp=new DatagramPacket(buf,buf.length);
while(true)
{
try
{
ds.receive(dp);
String message=new String(buf,0,dp.getLength());
message+="from"+dp.getAddress().getHostAddress()+":"+dp.getPort();
list.add(message,0);
}
catch(Exception ex)
{
if(!ds.isClosed())
ex.printStackTrace();
}
}
}
}).start();
tfData.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String strIp=tfIp.getText().toString();
String strData=tfData.getText().toString();
try
{
DatagramPacket dp=new DatagramPacket(strData.getBytes(),strData.getBytes().length,InetAddress.getByName(strIp),1029);
ds.send(dp);
}
catch(Exception ex)
{
ex.printStackTrace();
}
tfIp.setText("");
tfData.setText("");
}
}
);
panel.add(tfIp,"West");
panel.add(tfData,"East");
add(panel,"South");
}
public static void main(String args) {
new Chat();
}
}