67,513
社区成员
发帖
与我相关
我的任务
分享
tf.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Thread sct=new Thread(new SendContentThread(tf,username));
sct.start();
Thread rct=new Thread(new ReceiveContentThread(ta,port));
rct.start();
}
}
);
public class SendContentThread implements Runnable{
JTextField tf;
String username;
public SendContentThread(JTextField tf, String username) {
this.tf=tf;
this.username=username;
// TODO Auto-generated constructor stub
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
DatagramSocket ds=new DatagramSocket();
InetAddress ia=InetAddress.getLocalHost();
Properties pro=new Properties();
pro.load(new FileInputStream("F:\\codeJava\\ChatRoom_U\\src\\list.properties"));
Set keySet=pro.keySet();//key的集合
Iterator iter=keySet.iterator();
while(iter.hasNext())
{
String alreadyName=(String)iter.next();//每次循环就能拿到一个key
int port=Integer.parseInt(pro.getProperty(alreadyName));//端口
String string=username+":"+tf.getText();
byte by1[]=string.getBytes();
DatagramPacket dp=new DatagramPacket(by1,string.length());
dp.setAddress(ia);
dp.setPort(port);//端口不能固定
ds.send(dp);
}
tf.setText("");
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class ReceiveContentThread implements Runnable{
JTextArea ta;
int port;
public ReceiveContentThread(JTextArea ta, int port) {
// TODO Auto-generated constructor stub
this.ta=ta;
this.port=port;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
byte by[]=new byte[1024];
DatagramPacket dp=new DatagramPacket(by,by.length);
DatagramSocket ds=new DatagramSocket(port);
while(true)
{
System.out.println("等消息......");
ds.receive(dp);
String str=new String(by);
System.out.println("收到消息:"+str);
ta.setText(str+"\n");
}
} catch (SocketException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}