一、java实现UDP接收端通信
@SneakyThrows
public static void init() {
UDPDatagramSocket udpDatagramSocket= (UDPDatagramSocket) ApplicationContextHelper.getBean("UDPDatagramSocket");
udpDatagramSocket.run();
}
package org.jeecg.modules.flight.socket;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
// 接收端
@Component("UDPDatagramSocket")
public class UDPDatagramSocket {
public void run() throws IOException {
// 1.创建接受对象
DatagramSocket socket = new DatagramSocket(3000);
// 2.创建一个数据包接收数据
byte [] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
while (true) {
// 3.等待接受数据
socket.receive(packet);
// 4.取出数据
int len = packet.getLength();
byte[] data = packet.getData();
String rs = new String(data,0,len);
System.out.println("收到来自: "+ packet.getAddress()+ ", 端口号为: "+ packet.getPort()+"的消息: " + rs);
}
}
}
二、java实现TCP接收端通信
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(20);//创建20个线程
ServerSocket ss = null;
ThreadLocal<String> longLocal = new ThreadLocal<String>();
public void run() {
try {
ss = new ServerSocket(20055);
} catch (IOException e) {
e.printStackTrace();
}
for (int i = 0; i < 20; i++) {
fixedThreadPool.execute(new Runnable() {
@Override
public void run() {
try {
//创建一个serversocket其端口与发送端的端口是一样的
while (true) {
Socket s = ss.accept();
//侦听并接受到此套接字的连接,返回一个socket对象
if (s != null) {
InputStream is = null;
//获取到输入流
String ip = s.getInetAddress().toString().replace("/", "");
s.setKeepAlive(true);
is = s.getInputStream();
System.out.println("服务器端接受请求:==========socket.getInetAddress()==========" + ip);
byte[] buf = new byte[4096];
//接收收到的数据
int line = 0;
while ((line = is.read(buf)) != -1) {
String valie = new String(buf, 0, line).trim();
// System.out.println(valie);
saveHlDroneMessage(valie, ip);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
还没有评论,来说两句吧...