易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
JAVA 多线程实现聊天(UDP通信 )
JAVA 多线程实现聊天(UDP通信 )
/*
* UDP实现相互传递消息
*
*/
import
java.io.BufferedReader;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.net.DatagramPacket;
import
java.net.DatagramSocket;
import
java.net.InetAddress;
/*
* 客服端/发送端
*/
class
Send
implements
Runnable{
private
DatagramPacket dPacket;
private
DatagramSocket dSocket;
public
Send(DatagramSocket dSocket)
{
this
.dSocket=dSocket;
}
@Override
public
void
run() {
// TODO Auto-generated method stub
try
{
BufferedReader bufferedReader=
new
BufferedReader(
new
InputStreamReader(System.in));
//从键盘读取数据
String string;
while
((string=bufferedReader.readLine())!=
null
) {
//循环读取
if
(string.equals(
"Bye"
))
{
System.err.println(
"我下线了"
);
System.exit(
0
);
}
byte
[]buf=string.getBytes();
//将输入的字符串转换为字节数组
/*
* 获取本机IP(外网IP,我是发送到本机IP,也可以试试其它IP),然后从本机端口号为18888的端口发送出去
*/
String IP=InetAddress.getLocalHost().getHostAddress().toString();
dPacket=
new
DatagramPacket(buf, buf.length, InetAddress.getByName(IP),
18888
);
dSocket.send(dPacket);
}
}
catch
(Exception e) {
// TODO: handle exception
System.err.println(
"发送数据失败"
);
e.printStackTrace();
}
}
}
/*
*服务器/ 接受端
*/
class
Recive
implements
Runnable{
private
DatagramPacket dPacket;
private
DatagramSocket dSocket;
public
Recive(DatagramSocket dSocket)
{
this
.dSocket=dSocket;
}
@Override
public
void
run() {
// TODO Auto-generated method stub
while
(
true
) {
byte
[] buf=
new
byte
[
1024
];
dPacket=
new
DatagramPacket(buf, buf.length);
try
{
dSocket.receive(dPacket);
String IP=dPacket.getAddress().getHostAddress();
String data=
new
String(dPacket.getData(),
0
, dPacket.getLength());
int
portString=dPacket.getPort();
System.out.println(
"IP:"
+IP+
"端口:"
+portString+
" "
+data);
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public
class
test {
/**
* @param args
*/
public
static
void
main(String[] args)
throws
Exception{
// TODO Auto-generated method stub
new
Thread(
new
Send(
new
DatagramSocket())).start();
new
Thread(
new
Recive(
new
DatagramSocket(
18888
))).start();
}
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图