我无法通过三星 S9+ 的 DatagramSocket 发送 DatagramPacket(我使用的不是 UI 线程)
Posted
技术标签:
【中文标题】我无法通过三星 S9+ 的 DatagramSocket 发送 DatagramPacket(我使用的不是 UI 线程)【英文标题】:I cannot send a DatagramPacket through DatagramSocket from Samsung S9+ (I use another thread than UI thread) 【发布时间】:2020-01-05 06:42:54 【问题描述】:我尝试将 UDP 数据包从我的手机发送到 PC - IP 192.168.1.113,在 PC 上我使用“数据包发送器”和 UDP 服务器端口 55777。 但它不起作用,我已经将 UDP 数据包从 Excel 中的 VBA 脚本发送到数据包发送者并且它有效,我也可以通过发送 我已经下载到移动端的 UDP 应用程序,发送到“数据包发送者”。
我使用: android Studio 3.5 SDK平台8.1 手机:三星S9+
我已将 INTERNET 权限添加到清单中:
我从一个新线程发送数据包,因为主线程不允许发送数据包,下面的代码是我继续之前的第一步,但需要先让它工作。
public class MainActivity extends AppCompatActivity
private Handler mainHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
public void startThread(View view)
ExampleRunnable runnable = new ExampleRunnable(10);
new Thread(runnable).start();
class ExampleRunnable implements Runnable
@Override
public void run()
DatagramSocket ds = null;
String message = "Hello";
try
ds = new DatagramSocket();
InetAddress serverAddr = InetAddress.getByName("192.168.1.113");
DatagramPacket dp;
dp = new DatagramPacket(message.getBytes(), message.length(), serverAddr, 55777);
ds.send(dp);
catch (IOException e)
e.printStackTrace();
finally
if (ds != null)
ds.close();
【问题讨论】:
没有互联网,它是基于本地连接的。我对吗?如果程序有任何错误/响应,请在此处发布日志。 添加您的堆栈跟踪以了解问题。您可以关注此代码snippet。 【参考方案1】:在回答问题之前,有几件事需要确认。您可以提供堆栈跟踪或任何错误(如果有)。在您的情况下,如果没有编程错误,您应该检查您的firewall
一次。为端口55777
上的传入连接请求添加新的firewall rule
。
【讨论】:
以上是关于我无法通过三星 S9+ 的 DatagramSocket 发送 DatagramPacket(我使用的不是 UI 线程)的主要内容,如果未能解决你的问题,请参考以下文章
GALAXY S9狂怼iPhone X,三星又拍广告黑苹果?
三星又拍广告黑苹果,这次是拿 GALAXY S9 怼 iPhone X
国行Galaxy S9开测Android 9.0:UI大变样