package com.cskaoyan.anotherPerson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class ReceiveTask implements Runnable {
int port;
DatagramSocket datagramSocket;
public ReceiveTask(int port,DatagramSocket socket){
this.port = port;
this.datagramSocket = socket;
}
@Override
public void run() {
try {
receiveData();
} catch (IOException e) {
e.printStackTrace();
}
}
public void receiveData() throws IOException {
while (true) {
byte[] bytes = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(bytes, 0, bytes.length);
datagramSocket.receive(receivePacket);
int length = receivePacket.getLength();
int offset = receivePacket.getOffset();
String s = new String(bytes, offset, length);
System.out.println(s);
if (s.equals("88")) {
System.out.println("已退出");
datagramSocket.close();
break;
}
}
}
}
在这里插入代码片
package com.cskaoyan.anotherPerson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.*;
public class SendTask implements Runnable {
String ip;
int port;
BufferedReader br;
DatagramSocket udpSocket;
public SendTask(BufferedReader br, int port, DatagramSocket udpSocket, String ip) throws SocketException {
this.br = br;
this.port = port;
this.udpSocket = udpSocket;
this.ip = ip;
}
@Override
public void run() {
while (true) {
try {
String s;
while ((s = br.readLine()) != null) {
sendData(udpSocket, s);
}
if (s.equals("88")) {
break;
}
udpSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void sendData(DatagramSocket udpSocket, String s) throws IOException {
byte[] bytes = s.getBytes();
InetAddress targetIp = InetAddress.getByName(ip);
int targetPort = port;
DatagramPacket packet = new DatagramPacket(bytes, 0, bytes.length, targetIp, targetPort);
udpSocket.send(packet);
}
}
oneperson
anotherperson
package com.cskaoyan.oneperson;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramSocket;
import java.net.SocketException;
public class OnePerson {
public static void main(String[] args) throws SocketException {
DatagramSocket datagramSocket = new DatagramSocket(10000);
SendTask sendTask = new SendTask(new BufferedReader(new InputStreamReader(System.in)),
10086,new DatagramSocket(),"127.0.0.1");
ReceiveTask receiveTask = new ReceiveTask(10000,datagramSocket);
new Thread(sendTask).start();
new Thread(receiveTask).start();
}
}
package com.cskaoyan.anotherPerson;
import com.cskaoyan.oneperson.ReceiveTask;
import com.cskaoyan.oneperson.SendTask;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramSocket;
import java.net.SocketException;
public class AnotherPerson {
public static void main(String[] args) throws SocketException {
DatagramSocket datagramSocket = new DatagramSocket(10086);
SendTask sendTask = new SendTask(new BufferedReader(new InputStreamReader(System.in)),
10000,datagramSocket,"127.0.0.1");
ReceiveTask receiveTask = new ReceiveTask(10086,datagramSocket);
new Thread(sendTask).start();
new Thread(receiveTask).start();
}
}