android写了一个发送UDP包到指定IP-端口的程序,可怎么都收不到数据包。。。

这段代码在电脑上用JAVA编译运行,在linux虚拟机上用pcap可以抓到包。。如下图:
图片说明
在linux上可以抓到该数据包:
图片说明
然后再在andiord studio里实现并生成apk安装到手机上,但点击send没有反应啊,linux上没有收到任何数据包。。为什么会这样呢?

package com.test.s.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class MainActivity extends AppCompatActivity {
    private Button buttonSend;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonSend = (Button) findViewById(R.id.buttonSend);

        buttonSend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Sent00!", Toast.LENGTH_SHORT).show();
                new Thread(){
                    @Override
                    public void run() {
                        try {
                            txUDP("192.168.1.102", 8888, "abcdefg");
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }.start();
            }
        });
    }
    private void txUDP(String destip, int port, String txdata) throws IOException {
        InetAddress address = InetAddress.getByName(destip);
        byte[] data = txdata.getBytes();
        // 2.创建数据报,包含发送的数据信息
        DatagramPacket packet = new DatagramPacket(data, data.length, address, port);
        // 3.创建DatagramSocket对象
        DatagramSocket socket = new DatagramSocket();
        // 4.向服务器端发送数据报
        socket.send(packet);
        // 5.关闭资源
        socket.close();
    }
}

求解答啊,手机、电脑和linux在同一局域网。

3个回答

在AndroidManifest中添加Internet权限:

在AndroidManifest中添加Internet权限:

我最近遇到这个问题,觉得是发送udp报文的网卡可能有问题,我手机开了热点给另一个手机,但他总是通过数据流量发送udp报文,自然另一个接收不到,但要怎么设置这个发送方向还没想到办法

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐