Skip to content

Commit

Permalink
[新增功能](github-master): 修复UDP地址占用崩溃
Browse files Browse the repository at this point in the history
  • Loading branch information
eurigo committed Aug 12, 2021
1 parent e33a6cf commit 844ee83
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 17 deletions.
21 changes: 5 additions & 16 deletions app/src/main/java/com/eurigo/udputils/UdpActivity.java
Original file line number Diff line number Diff line change
@@ -1,28 +1,18 @@
package com.eurigo.udputils;

import android.annotation.SuppressLint;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.DhcpInfo;
import android.net.LinkProperties;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;

import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.NetworkUtils;
import com.blankj.utilcode.util.TimeUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.blankj.utilcode.util.Utils;
import com.eurigo.udplibrary.UdpUtils;
import com.google.android.material.button.MaterialButton;

Expand Down Expand Up @@ -99,15 +89,14 @@ public void onClick(View v) {
break;
case R.id.btn_udp_receive:
if ("开始接收".equals(btnReceive.getText().toString())) {
mAdapter.addDataAndScroll("开始接收"
+ UdpUtils.getInstance().getCurrentPort() + "端口数据包...");
UdpUtils.getInstance().startUdpSocket();
UdpUtils.getInstance().setReceiveListener(this);
btnReceive.setText("停止接收");
// 重置接收的监听端口
if (!TextUtils.isEmpty(etReceivePort.getText())) {
UdpUtils.getInstance().setUdpPort(Integer.parseInt(getEditText(etReceivePort)));
mAdapter.addDataAndScroll("监听端口变更为:" + getEditText(etReceivePort));
mAdapter.addDataAndScroll("开始接收"
+ UdpUtils.getInstance().getCurrentPort() + "端口数据包...");
UdpUtils.getInstance().startUdpSocket();
UdpUtils.getInstance().setReceiveListener(this);
btnReceive.setText("停止接收");
}
}else {
UdpUtils.getInstance().stopUdpSocket();
Expand Down
5 changes: 4 additions & 1 deletion udplibrary/src/main/java/com/eurigo/udplibrary/UdpUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketException;
import java.util.Arrays;
import java.util.Map;
Expand Down Expand Up @@ -46,7 +47,9 @@ public void startUdpSocket() {
}
try {
// Socket接收数据监听的端口,默认为9090
client = new DatagramSocket(getCurrentPort());
client = new DatagramSocket(null);
client.setReuseAddress(true);
client.bind(new InetSocketAddress(getCurrentPort()));
if (receivePacket == null) {
receivePacket = new DatagramPacket(receiveByte, BUFFER_LENGTH);
}
Expand Down

0 comments on commit 844ee83

Please sign in to comment.