「javaudp私聊」javaudp聊天室
今天给各位分享javaudp私聊的知识,其中也会对javaudp聊天室进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
JAVA UDP聊天程序问题 给100分!
public void run() /* 用于被调用的接口run方法 */
{
while (true)
{
try
{
byte[] buf = new byte[1024];/* 接收端程序,设置BUF数组长度为1024位 */
DatagramPacket dp = new DatagramPacket(buf, buf.length);/* 创建接收数据报的实例 */
ds.receive(dp);
lst.add("他说:" + new String(buf), 0);
} catch (IOException ex)
{
}
}
}
======================
线程的run方法改成上面这样就可以了,原因是因为接收端每次循环都是使用的同一个buf,而buf没有清空,所以导致每次接收都只更新前面一小段信息,后面的信息没有改变。
java UDP 实现 多人聊天
UDP也可以和TCP那样遍历list然后发送啊
客户端向外面开一个UDP端口接受数据报
然后服务器这边要是有消息要发送就直接发送数据报包就可以了嘛
UDP都不用保持着连接的,比TCP还简单些
另外也可以用组播来实现,搜索下java UDP 组播,你能找到不少实例性的代码,也有聊天室的代码
Java如何使用UDP协议实现多人聊天?
UDP 是广播的,如果是做实时的聊天,就开两个线程、不需要服务器端。一个专门接收、一个做发送
用java语言实行一个UDP聊天室 多客户 无图形用户界面
这是很久以前在网上找的,略作修改的一个小案例UDP聊天的,供你参考,改改里面的ip地址。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
public class UDPClient {
public static void main(String[] args) throws IOException {
new UDPClient().go();
}
private void go() {
ClientSendThread send = new ClientSendThread();
new Thread(send).start();
ClientRecvThread recv = new ClientRecvThread();
new Thread(recv).start();
}
class ClientSendThread implements Runnable {
@Override
public void run() {
try {
DatagramSocket ds = new DatagramSocket();
String str = "";
byte[] buf = null;
while (true) {
System.out.println("请输入");
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
str = br.readLine();
if ("bye".equals(str))
break;
buf = str.getBytes();
// System.out.println("-----buf.length-------" + buf.length);
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress("127.0.0.1", 5678));
ds.send(dp);
buf = null;
}
ds.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ClientRecvThread implements Runnable {
@Override
public void run() {
byte[] buf = new byte[1024];
//接收端的端口需要指定,不然发送端不知道向哪个端口发送数据包
DatagramSocket ds;
try {
ds = new DatagramSocket(5679);
String message = "";
DatagramPacket dp = null;
while(true){
dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
message = new String(buf,0,dp.getLength());
System.out.println("接收到Server端信息为:"+message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
public class UDPServer {
public static void main(String[] args) throws IOException {
new UDPServer().go();
}
private void go() {
//服务端启动2个线程,1个发送,1个接收
ServerSendThread send = new ServerSendThread();
new Thread(send).start();
ServerRecvThread recv = new ServerRecvThread();
new Thread(recv).start();
}
// 服务端发送线程
class ServerSendThread implements Runnable{
@Override
public void run() {
try {
DatagramSocket ds = new DatagramSocket();
String str = "";
byte[] buf = null;
while (true) {
System.out.println("请输入");
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
str = br.readLine();
if ("bye".equals(str))
break;
buf = str.getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress("192.163.20.61", 5679));
ds.send(dp);
buf = null;
}
ds.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 服务端接收线程
class ServerRecvThread implements Runnable{
@Override
public void run() {
byte[] buf = new byte[1024];
//接收端的端口需要指定,不然发送端不知道向哪个端口发送数据包
DatagramSocket ds;
try {
ds = new DatagramSocket(5678);
String message = "";
while(true){
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
message = new String(buf,0,dp.getLength());
System.out.println("接收到Client端的信息为:"+message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
关于javaudp私聊和javaudp聊天室的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-07,除非注明,否则均为
原创文章,转载请注明出处。