本文实例为大家分享了java控制台实现聊天程序的具体代码,供大家参考,具体内容如下
发送端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
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 = 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(); } } |
服务端
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
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+ ":" +receiveData); if (receiveData.equals( "bye" )){ break ; } } catch (IOException e) { e.printStackTrace(); }
} socket.close(); } } |
学生端代码
1 2 3 4 5 6 7 8 9 10 |
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();
} } |
教师端代码
1 2 3 4 5 6 7 8 9 |
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();
} } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
原文链接:https://blog.csdn.net/wuhuizzj/article/details/108985608