黑马程序员技术交流社区
标题:
【记录】代码练习-多线程实现聊天室程序
[打印本页]
作者:
Kevin.Kang
时间:
2015-8-7 19:12
标题:
【记录】代码练习-多线程实现聊天室程序
测试类:
package com.kxg_05;
import java.io.IOException;
import java.net.DatagramSocket;
public class ChatRoom {
public static void main(String[] args) throws IOException {
DatagramSocket dsSend = new DatagramSocket();
DatagramSocket dsReceive = new DatagramSocket(48264);
SendThread st = new SendThread(dsSend);
ReceiveThread rt = new ReceiveThread(dsReceive);
Thread t1 = new Thread(st);
Thread t2 = new Thread(rt);
t1.start();
t2.start();
}
}
复制代码
发送端类:
package com.kxg_05;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
public class SendThread implements Runnable {
private DatagramSocket ds;
public SendThread(DatagramSocket ds) {
this.ds = ds;
}
@Override
public void run() {
try {
Scanner sc = new Scanner(System.in);
String s = null;
while ((s = sc.nextLine()) != null) {
byte[] bys = s.getBytes();
DatagramPacket dp = new DatagramPacket(bys, bys.length,
InetAddress.getByName("10.164.22.254"), 48264);
ds.send(dp);
if (s.equals("我下了")) {
break;
}
}
ds.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
复制代码
接收端类:
package com.kxg_05;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class ReceiveThread implements Runnable {
private DatagramSocket ds;
public ReceiveThread(DatagramSocket ds) {
this.ds = ds;
}
@Override
public void run() {
try {
while (true) {
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys, bys.length);
ds.receive(dp);
String ip = dp.getAddress().getHostAddress();
String s = new String(dp.getData(), 0, dp.getLength());
System.out.println(ip + ":" + s);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2