本文实例为大家分享了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