如何将数据从 Android 中的数据报套接字发送到 Node js 服务器?

Posted

技术标签:

【中文标题】如何将数据从 Android 中的数据报套接字发送到 Node js 服务器?【英文标题】:How to send data from datagram socket in Android to Node js Server? 【发布时间】:2020-03-18 23:23:06 【问题描述】:

我尝试为 android 编写在线游戏。我的第一步是建立连接 在客户端/android应用程序和服务器之间。 服务器在 Node js 上运行。

首先,我尝试通过本地网络将数据从客户端发送到服务器。 问题是即使如此简单的事情也无法以某种方式起作用。服务器 无法从客户端接收任何数据。

客户:

public class LongOperation extends AsyncTask<Void, Void, Void> 
@Override
protected Void doInBackground(Void... params) 

    try 
        String messageStr = "Hallo Welt";

        DatagramSocket s = new DatagramSocket();
        InetAddress local = null;
        local = InetAddress.getByName("127.0.0.1");
        int msg_length = messageStr.length();
        byte[] message = messageStr.getBytes();

        DatagramPacket p = new DatagramPacket(message, msg_length, local, 12345);
        s.send(p);
        android.util.Log.w("UDP", "Works fine!");
    
    catch (Exception e)
    

        System.err.println("ERROR!                               !");
        e.printStackTrace();

    

    return null;


服务器:

'use strict';

var PORT = 12345;
var HOST = '127.0.0.1';

var dgram = require('dgram');
var server = dgram.createSocket('udp4');

server.on('listening', function () 
    var address = server.address();
    console.log('UDP Server listening on ' + address.address + ':' + address.port);
);

server.on('message', function (message, remote) 
    console.log(remote.address + ':' + remote.port + ' - ' + message);
);

server.bind(PORT, HOST);

我在这里忽略了什么?

【问题讨论】:

【参考方案1】:

使用

server.bind(PORT);

相反。我尝试与另一个客户。但是在我更改服务器端之前,它没有用。所以我不确定你的客户端

【讨论】:

以上是关于如何将数据从 Android 中的数据报套接字发送到 Node js 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

数据报通道套接字不写 Java

Alpakka UDP:如何通过已绑定的套接字响应收到的数据报?

发送的广播数据报在Android中无法通过EACCES

如何使用 WIFI 将消息从 android 设备发送到 PC

示例:使用AsyncTask的Android双向网络套接字

android 中的 GCM 与 Socket