java控制台实现聊天程序

网友投稿 244 2022-10-12


java控制台实现聊天程序

本文实例为大家分享了java控制台实现聊天程序的具体代码,供大家参考,具体内容如下

发送端

package ip.chat;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetSocketAddress;

public class TalkSend implements Runnable{

DatagramSocket socket = null;

BufferedReader reader = null;

private int formIP;

private String toIP;

private int toPort;

public TalkSend(int formIP, String toIP, int toPort) {

this.formIP = formIP;

this.toIP = toIP;

this.toPort = toPort;

try {

socket = new DatagramSocket();

reader FfRlUe= new BufferedReader(new InputStreamReader(System.in));

}catch (Exception e){

e.printStackTrace();

}

}

@Override

public void run() {

while (true){

try {

String data = reader.readLine();

byte[] datas = data.getBytes();

DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress(this.toIP, this.toPort));

socket.send(packet);

if (data.equals("bye")){

break;

}

}catch (Exception e){

e.printStackTrace();

}

}

//关闭

socket.close();

}

}

服务端

package ip.chat;

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.SocketException;

public class TalkReceive implements Runnable{

DatagramSocket socket = null;

private int port;

//设置消息来源

private String msgFrom;

public TalkReceive(int port ,String msgFrom) {

this.port = port;

this.msgFrom = msgFrom;

try {

socket = new DatagramSocket(port);

} catch (SocketException e) {

e.printStackTrace();

}

}

@Override

public void run() {

while(true){

try {

//准备接收包裹

byte[] container = new byte[1024];

DatagramPacket packet = new DatagramPacket(container,0,container.length);

socket.receive(packet);//接收包裹

//断开连接

byte[] data = packet.getData();

String receiveData = new String(data, 0, data.length);

System.out.println(msgFrom+":"+rhttp://eceiveData);

if (receiveData.equals("bye")){

break;

}

} catch (IOException e) {

e.printStackTrace();

}

}

socket.close();

}

}

学生端代码

package ip.chat;

public class TalkStudent {

public static void main(String[] args) {

//开启两个线程

new Thread(new TalkSend(7777,"localhost",9999)).start();

new Thread(new TalkReceive(8888,"老师")).start();

}

}

教师端代码

package ip.chat;

public class TalkTeacher {

public static void main(String[] args) {

new Thread(new TalkSend(5555,"localhost",8888)).start();

new Thread(new TalkReceive(9999,"学生")).start();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:融云洞察:打造社交元宇宙,从「读懂 00 后」开始
下一篇:.Net UDP通讯示例(.net是干嘛的)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~