「javaudp私聊」javaudp聊天室

博主:adminadmin 2022-12-07 09:06:07 63

今天给各位分享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聊天室的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-07,除非注明,否则均为首码项目网原创文章,转载请注明出处。