急求一个关于UDP的JAVA实现多人聊天源代码

急求一个关于UDP的JAVA实现多人聊天源代码,第1张

import java.io.InputStream

import java.io.DataInputStream

import java.io.InputStreamReader

import java.io.OutputStream

import java.io.DataOutputStream

import java.io.BufferedReader

import java.net.ServerSocket

import java.net.Socket

import java.io.IOException

import java.util.Date

class Server

{

public Server()

{

try

{

ServerSocket s=new ServerSocket(8888)

Socket ss=s.accept()

OutputStream out=ss.getOutputStream()

DataOutputStream dout=new DataOutputStream(out)

InputStream in=ss.getInputStream()

DataInputStream din=new DataInputStream(in)

System.out.print(din.readUTF()+"棚昌!")

dout.writeUTF("你已经连接到服务器"+"\t"+"谈和坦你的地址:"+ss.getInetAddress()+"\t"

+"你的链接端口:"+ss.getLocalPort()+"\n")

new ReadMessage(din).start()

new SendMessage(dout).start()

}

catch (IOException e)

{

e.printStackTrace()

}

}

public static void main(String[] args)

{

new Server()

}

}

//接受客户端信息

class ReadMessage extends Thread

{

private DataInputStream din

public ReadMessage(DataInputStream din)

{

this.din=din

}

public void run()

{

String str

try

{

while (true)

{

str=din.readUTF()

System.out.println(new Date().toLocaleString()+"客户端说:"+str)

if (str.equals("bye"))

{

System.out.println("客户端下线!")

break

}

}

}

catch (IOException e)

{

e.printStackTrace()

}

}

}

// 发出服务器信息

class SendMessage extends Thread

{

private DataOutputStream dout

public SendMessage(DataOutputStream dout)

{

this.dout=dout

}

public void run()

{

InputStreamReader inr=new InputStreamReader(System.in)

BufferedReader buf=new BufferedReader(inr)

String str

try

{

while(true)

{

str=buf.readLine()

dout.writeUTF(str)

if (str.equals("bye"含桐))

{

System.out.println("服务器退出!")

System.exit(1)

}

}

}

catch (IOException e)

{

e.printStackTrace()

}

}

}

import java.io.InputStream

import java.io.DataInputStream

import java.io.InputStreamReader

import java.io.OutputStream

import java.io.DataOutputStream

import java.io.BufferedReader

import java.net.Socket

import java.io.IOException

import java.util.Date

class Client

{

public Client()

{

try

{

Socket s=new Socket("192.168.1.2",8888)

InputStream in=s.getInputStream()

DataInputStream din=new DataInputStream(in)

OutputStream out=s.getOutputStream()

DataOutputStream dout=new DataOutputStream(out)

dout.writeUTF("服务器你好!我是客户端")

System.out.println(din.readUTF())

new Thread(new SenderMessage(dout)).start()

new Thread(new ReaderMessage(din)).start()

}

catch (IOException e)

{

e.printStackTrace()

}

}

public static void main(String[] args)

{

new Client()

}

}

class ReaderMessage implements Runnable

{

private DataInputStream din

public ReaderMessage(DataInputStream din)

{

this.din=din

}

public void run()

{

String str

try

{

while(true)

{

str=din.readUTF()

System.out.println(new Date().toLocaleString()+"服务器说:"+str)

if (str.equals("bye"))

{

System.out.println("服务器已经关闭,此程序自动退出!")

break

}

}

}

catch (IOException e)

{

e.printStackTrace()

}

}

}

class SenderMessage implements Runnable

{

private DataOutputStream dout

public SenderMessage(DataOutputStream dout)

{

this.dout=dout

}

public void run()

{

String str

InputStreamReader inf=new InputStreamReader(System.in)

BufferedReader buf=new BufferedReader(inf)

try

{

while (true)

{

str=buf.readLine()

dout.writeUTF(str)

if (str.equals("bye"))

{

System.out.println("客户端自己退出!")

System.exit(1)

}

}

}

catch (IOException e)

{

e.printStackTrace()

}

}

}

单线程的

import java.net.*

public class UDP

{

public static void main(String args[])

{

for (int port=0port<=65535port++) {

try {

DatagramSocket server=new DatagramSocket(port)

server.close()

}

catch(SocketException e) {

System.out.println("穗毕UDP端口"+port+"开放!")

}

}

}

}

希望能够帮助到你猜早芹,望睁慎采纳!

三个问题一个答案,什么都不会发生

原因:tcp、udp server程序无非是绑定了一个特定的端口,但是client端使用的端口都是随机产生的,没人说client 和server 的tcp和udp端口必须一喊烂致哦

建议你去了解下tcp ip的运作机制销配,就比较容郑斗漏易理解了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12473873.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存