gpt4 book ai didi

Android UDP套接字无法发送数据

转载 作者:行者123 更新时间:2023-11-29 00:32:26 26 4
gpt4 key购买 nike

我是 Android 编程的新手,我想写一段代码,简单地在 127.0.0.1 上发送一个字符串,我将能够在 netcat 上观看它,但问题是当我在我的 android 上尝试它时project 没有任何反应,所以我在一个普通的 java 项目中尝试过,一切正常。 所以经过大量研究,我发现……什么都没有

我的安卓代码:

   import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

import java.net.*;
import java.io.*;

public class MainActivity extends Activity {


public static final int MON_PORT = 5001;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button bouton2 = (Button)findViewById(R.id.envoi);
bouton2.setOnClickListener(new OnClickListener(){

public void onClick(View v){
try {

int port=MON_PORT;
InetAddress adresse = InetAddress.getByName("localhost");
DatagramSocket socket;


String leMessage = "test";
int longueur = leMessage.length();
byte[] message= new byte [longueur];
message = leMessage.getBytes();


socket = new DatagramSocket();
DatagramPacket packet = new DatagramPacket(message,longueur,adresse,port);
socket.send(packet);
System.out.println("test d'execution");
socket.close();

} catch (UnknownHostException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SocketException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
});


}

我检查了我的 AndroidManifest.xml 和权限:

<uses-permission android:name="android.permission.INTERNET"> </uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"> </uses-permission>

不在应用程序标签之间

我使用的是基于 Android API 7 的 AVD,但我尝试过使用 API 16 的另一个 AVD,但结果是一样的,有人可以帮我找出问题所在吗?

谢谢

最佳答案

实际问题是您的 PC 无法访问您发送的 UDP 数据包,因为该数据包是在设备“模拟器”通过 Loopback 使用的不同 IP 地址上发送的。机制。

事情是这样的。你可以放心地假设Android模拟器是一台远程机器,通过IP网络远程连接到你的PC,它有自己的IP地址,可以和你的PC通信。您不能只使用环回 IP 通过 IP 与您的 PC 通信。请按照本文档页面 Emulator 中的指定使用 10.0.2.2 .

使用该 IP,您将能够在 netcat 中看到数据包。

关于Android UDP套接字无法发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14630624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com