国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

網絡傳輸協議 - 用Java 寫了一個簡單的聊天軟件 使用UDP,但是總是收不到消息?

瀏覽:114日期:2023-11-28 15:04:32

問題描述

用Java 寫了一個簡單的聊天軟件 使用UDP,但是總是收不到消息,大神看看代碼哪里出問題了。

package com.window;import javax.swing.*;import java.awt.*;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.logging.Logger;/** * Created by young on 2017/4/19. */public class MainWindow { private JLabel lb_addIp; private JButton btn_add; private JPanel jp_qq; private JLabel lb_selectIP; private JComboBox<String> cb_selectIP; private JTextField tf_addip; private JTextArea ta_charHistory; private JTextField tf_input; private JButton btn_submit; private JLabel lb_charHistory; private JLabel lb_message; private JTextPane tp; private String ip; private String sendMessage; private int sendport = 10023; private int receviceport = 10024; private DefaultListModel<String> listModel = new DefaultListModel<String>(); public String name; private List<String> messageList = new ArrayList<>(); public MainWindow() {btn_add.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) {ip = tf_addip.getText();Object[] com = new Object[]{ip};cb_selectIP.addItem(ip); }});btn_submit.addMouseListener(new MouseAdapter() { Logger logger = Logger.getLogger('submit'); @Override public void mouseClicked(MouseEvent e) {if (ip == null) { lb_message.setForeground(Color.red); lb_message.setText('請輸入IP。'); return;}try { InetAddress inetAddress = InetAddress.getByName(ip); if (!inetAddress.isReachable(2000)) {lb_message.setForeground(Color.red);lb_message.setText('無法鏈接該地址!');return; }} catch (IOException e1) { e1.printStackTrace();}sendMessage = tf_input.getText();logger.info('sendMessage' + sendMessage);new Thread(() -> { send(sendMessage); lb_message.setForeground(Color.green); lb_message.setText('發送成功。');}).start();new Thread(() -> { receive();}).start(); }}); } public void receive() {DatagramSocket datagramSocket = null;try { datagramSocket = new DatagramSocket(sendport, InetAddress.getByName(ip)); byte[] buf = new byte[1024]; DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length); datagramSocket.receive(datagramPacket); String id = datagramPacket.getAddress().getHostAddress(); int port = datagramPacket.getPort(); byte[] date = datagramPacket.getData(); System.out.println(Arrays.toString(date)); String mes = ip + ':' + new String(date) + 'n'; //System.out.println('ip=' + id + 'port=' + port); tp.setText(tp.getText() + mes);} catch (IOException e) { e.printStackTrace();} finally { assert datagramSocket != null; datagramSocket.close();} } public void initWindow() {JFrame frame = new JFrame('QQ');frame.setContentPane(new MainWindow().jp_qq);frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);frame.pack();frame.setVisible(true);tp.setEditable(false); } public void send(String message) {DatagramSocket datagramSocket = null;try { datagramSocket = new DatagramSocket(receviceport); byte[] buf = message.getBytes(); DatagramPacket packet = new DatagramPacket(buf, buf.length, InetAddress.getByName(ip), sendport); datagramSocket.send(packet); tp.setText(tp.getText() + name + message + 'n');} catch (IOException e) { e.printStackTrace();} finally { datagramSocket.close();} }}

代碼有點多,就放到github上了github地址

問題解答

回答1:

你把發送和接收分別用兩個線程執行。這就出現了一個問題,有可能先執行接收再執行發送,也有可能在發送的過程中就執行接收了。那么出現的現象就是有時能收到數據,有時卻收不到。

標簽: java
主站蜘蛛池模板: 亚洲综合一二三区 | 中国一级毛片aaa片 中国一级毛片录像 | 曰本女人色黄网站 | 国产三级香港三韩国三级 | 国产三级精品在线观看 | 成人a一级毛片免费看 | 国产成人免费观看在线视频 | 国产在线观看午夜不卡 | 在线观看日本永久免费视频 | 国产高清无专砖区2021 | 亚洲品质自拍视频 | 国产乱码精品一区二区三区中 | 久久亚洲欧洲日产国码 | 国产在线视频欧美亚综合 | 成人性视频免费网站 | 成人国产精品一级毛片视频 | 日本免费二区三区久久 | 97在线观看完整免费 | 一级毛毛片毛片毛片毛片在线看 | 一级毛片免费不卡在线 | 亚洲欧美中文在线观看4 | 一级片免费观看 | 国产在线观看一区二区三区 | 亚洲免费三级 | 久久免费福利 | fc2久久 | 欧美日韩99 | 亚洲日本欧美产综合在线 | 日韩在线观看一区二区三区 | 国产成人免费视频精品一区二区 | 日韩亚洲欧美综合一区二区三区 | 久久国产精品二国产精品 | 免费人成在线观看播放国产 | 日韩欧美一级a毛片欧美一级 | 精品91精品91精品国产片 | 日本高清视频在线观看 | 国产在线观看成人免费视频 | 国产成人精品日本亚洲网站 | 日本免费一二区视频 | 男女午夜24式免费视频 | 日本精品久久 |