这段代码在电脑上用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在同一局域网。