java实现UDP\TCP接收端通信

心已赠人 2023-09-28 15:42 94阅读 0赞

一、java实现UDP接收端通信

  1. @SneakyThrows
  2. public static void init() {
  3. UDPDatagramSocket udpDatagramSocket= (UDPDatagramSocket) ApplicationContextHelper.getBean("UDPDatagramSocket");
  4. udpDatagramSocket.run();
  5. }
  6. package org.jeecg.modules.flight.socket;
  7. import org.springframework.stereotype.Component;
  8. import java.io.IOException;
  9. import java.net.DatagramPacket;
  10. import java.net.DatagramSocket;
  11. // 接收端
  12. @Component("UDPDatagramSocket")
  13. public class UDPDatagramSocket {
  14. public void run() throws IOException {
  15. // 1.创建接受对象
  16. DatagramSocket socket = new DatagramSocket(3000);
  17. // 2.创建一个数据包接收数据
  18. byte [] buffer = new byte[1024];
  19. DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
  20. while (true) {
  21. // 3.等待接受数据
  22. socket.receive(packet);
  23. // 4.取出数据
  24. int len = packet.getLength();
  25. byte[] data = packet.getData();
  26. String rs = new String(data,0,len);
  27. System.out.println("收到来自: "+ packet.getAddress()+ ", 端口号为: "+ packet.getPort()+"的消息: " + rs);
  28. }
  29. }
  30. }

二、java实现TCP接收端通信

  1. ExecutorService fixedThreadPool = Executors.newFixedThreadPool(20);//创建20个线程
  2. ServerSocket ss = null;
  3. ThreadLocal<String> longLocal = new ThreadLocal<String>();
  4. public void run() {
  5. try {
  6. ss = new ServerSocket(20055);
  7. } catch (IOException e) {
  8. e.printStackTrace();
  9. }
  10. for (int i = 0; i < 20; i++) {
  11. fixedThreadPool.execute(new Runnable() {
  12. @Override
  13. public void run() {
  14. try {
  15. //创建一个serversocket其端口与发送端的端口是一样的
  16. while (true) {
  17. Socket s = ss.accept();
  18. //侦听并接受到此套接字的连接,返回一个socket对象
  19. if (s != null) {
  20. InputStream is = null;
  21. //获取到输入流
  22. String ip = s.getInetAddress().toString().replace("/", "");
  23. s.setKeepAlive(true);
  24. is = s.getInputStream();
  25. System.out.println("服务器端接受请求:==========socket.getInetAddress()==========" + ip);
  26. byte[] buf = new byte[4096];
  27. //接收收到的数据
  28. int line = 0;
  29. while ((line = is.read(buf)) != -1) {
  30. String valie = new String(buf, 0, line).trim();
  31. // System.out.println(valie);
  32. saveHlDroneMessage(valie, ip);
  33. }
  34. }
  35. }
  36. } catch (Exception e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. });
  41. }
  42. }

发表评论

表情:
评论列表 (有 0 条评论,94人围观)

还没有评论,来说两句吧...

相关阅读

    相关 [后]实现Java和python通信

    > 业务需求 一个图像处理系统,python负责人工智能的图像处理模块,后端采用Java的生态,前端使用vue编写。 这就遇到一个问题,需要处理的图片数据从前端传给后端,后