小编Mik*_*iky的帖子

如何以编程方式连接2个Android设备与蓝牙?

我正在开发一个应用程序,它应该通过蓝牙自动连接2个Android设备.假设他们已经配对了.是否有可能实现这一目标?

connection android bluetooth

11
推荐指数
1
解决办法
2万
查看次数

是否可以通过wifi在2个Android设备之间交换消息?

我目前正致力于为Android移动设备创建应用程序,该应用程序应能够通过本地方式(如wifi和蓝牙)发送和接收消息.在对它进行研究之后,我发现Android没有本机wifi ad hoc功能,而实现这一点的唯一方法是通过生根设备并修补wpa_suplicant以及其他一些非通用的方法. .

我想要实现的内容概要:

Android应用程序扫描附近的设备并尝试自动连接到它们.如果其他设备也获得了该应用程序,则它会自动接受它收到的任何连接请求,并且当建立连接时,它会发回一条消息,确保安装了此应用程序,以便两者都可以自动开始交换消息,并且用户不会必须实时允许/拒绝任何发送/接收.

我的问题是:

  1. 有没有办法在2个Android设备之间通过wifi发送消息而不使用互联网?
  2. 由于不支持Ad Hoc,还有其他选择吗?
  3. 如果2的答案为否,则可以使其中一个设备成为接入点,以便另一个可以连接到它,反之亦然.
  4. 至于蓝牙,是否可以跳过或自动允许/拒绝弹出传入连接和配对程序?

如果你能给我答案那些和/或任何建议,我会很高兴的.

android bluetooth adhoc wifi android-wifi

7
推荐指数
1
解决办法
2572
查看次数

如何摆脱剩余的缓冲区?

我有一个服务器客户端应用程序,它使用数据报套接字来交换消息.我最初将缓冲区大小设置为1024字节,因为我不知道消息的长度.当我发送短于1024字节的内容时,我将其余的字符串显示为一些奇怪的字符(空字符或我不确定它们是如何被调用的).这是一个屏幕: 字符串缓冲区空字符

客户代码: byte[] buf = ("This is another packet.\n").getBytes(); DatagramPacket packet = new DatagramPacket(buf, buf.length, inetAddress, serverport); socket.send(packet)

服务器代码: byte[] buf = new byte[1024]; DatagramPacket packet = new DatagramPacket(buf, buf.length); socket.receive(packet);

java sockets networking udp datagram

3
推荐指数
1
解决办法
8343
查看次数

Android设备是否可以通过接入点交换消息并请求连接设备列表到此AP?

我正在开发一个应用程序,该应用程序应连接到开放的WiFi接入点,并与也连接到此接入点的设备交换消息.让我们假设接入点是开放的,没有任何限制.是否可以请求与其连接的设备的IP地址列表?然后,如果我们有地址,是否可以启动连接并与该设备交换消息?你见过类似的项目/应用吗?(是否可以在没有黑客攻击的情况下使用常规接入点?)

谢谢,任何片段/想法将受到高度赞赏!:)

android wifi access-point

2
推荐指数
1
解决办法
343
查看次数

如何从正在收听广播的多播套接字中获取IP地址?

我的服务器创建一个侦听UDP数据包的多播套接字.它正在接收发送到网络广播地址的数据包但我无法获取发送方的IP地址:

multisocket.getInetAddress().getHostAddress();
Run Code Online (Sandbox Code Playgroud)

回报

"::" 
Run Code Online (Sandbox Code Playgroud)

(我猜它是因为null getInetAddress).

如何获取发件人的IP地址?

提示:我想这与套接字没有绑定有关,基本上是整个广播,因为那些数据包不是专门发送给我而是发送到整个网络,但它们不应该保留发送方的IP地址吗?请赐教.

这是代码:

public void run() {
    try {
        Thread.sleep(5000);
        Log.i("SERVERUDP", "Connecting...");
        MulticastSocket multisocket = new MulticastSocket(SERVERPORT);
        multisocket.setBroadcast(true);
        Log.i("SERVERUDP","Server's IP is: " + multisocket.getLocalAddress().getHostAddress());
        getLocalIpAddress();
        while(true){
            byte[] b = new byte[65535];
            ByteArrayInputStream b_in = new ByteArrayInputStream(b);
            DatagramPacket dgram = new DatagramPacket(b, b.length);
            multisocket.receive(dgram); // blocks
            ObjectInputStream o_in = new ObjectInputStream(b_in);
            Object o = o_in.readObject();
            dgram.setLength(b.length);
            b_in.reset();
            if(o.getClass().getSimpleName().equalsIgnoreCase("Request")){
                Request request = (Request)o;
                String inetaddress = multisocket.getInetAddress().getHostAddress();
                Log.i("SERVERUDP-if", "Sending request to IP: " + inetaddress);
                new …
Run Code Online (Sandbox Code Playgroud)

java sockets ip android lan

2
推荐指数
1
解决办法
4468
查看次数

如何重新初始化数据包的缓冲区?

当我从netcat或我的客户端向我的UDP服务器发送UDP数据包时,我遇到了一些问题,该服务器监听广播UDP数据包.问题是我无法重新启动And的缓冲区socket.receive(packet);当你检查我的控制台输出时,你会看到数据包被发送或接收两次甚至更多次,最烦人的是当我发送一个更长的数据包时,下一个较小的一部分是前一部分!(控制台输出上的HERE标记了问题)我的客户端和服务器位于同一LAN上.

客户代码:

DatagramSocket socket = new DatagramSocket();
socket.setBroadcast(true);
byte[] buf = ("Hello from Client").getBytes();
byte[] buf2 = ("omg").getBytes();
DatagramPacket packet = new DatagramPacket(buf, buf.length, getBroadcastAddress(UDPConnection.context), Server.SERVERPORT);
DatagramPacket packet2 = new DatagramPacket(buf2, buf2.length, getBroadcastAddress(UDPConnection.context), Server.SERVERPORT);
Log.d("UDP", "C: Sending: '" + new String(buf) + "'");
socket.send(packet);
socket.send(packet2);
Run Code Online (Sandbox Code Playgroud)

服务器代码:

void run(){
MulticastSocket socket = new MulticastSocket(SERVERPORT);
socket.setBroadcast(true);
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
while(true){
    Log.d("UDP", "S: Receiving...");
    socket.receive(packet);
    //socket.setReceiveBufferSize(buf.length);
    packet.setData(buf); …
Run Code Online (Sandbox Code Playgroud)

java sockets string android udp

1
推荐指数
1
解决办法
2953
查看次数