gpt4 book ai didi

java - 具有 Java 客户端和 Python 服务器的数据报套接字

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:15 24 4
gpt4 key购买 nike

我正在尝试通过数据报套接字来通信两台机器,但我想我错过了一些东西......机器 A 运行 Android 应用程序(客户端)机器B是用Python编写的服务器

我可以毫无问题地从A向B发送消息,但A永远得不到B的答复,代码如下:

客户端(Java):

InetAddress serverAddr = InetAddress.getByName("10.0.0.10");
DatagramSocket socket = new DatagramSocket();
byte[] bufSent = "register".getBytes();
DatagramPacket dpSent = new DatagramPacket(bufSent,bufSent.length, serverAddr, 8088);
socket.send(dpSent);
byte[] bufRecv = new byte[1024];
DatagramPacket dpReceive = new DatagramPacket(bufRecv, bufRecv.length);
socket.receive(dpReceive);
String serverMessage = new String(dpReceive.getData(), 0, dpReceive.getLength());
Log.v(LOGTAG, "Received " + serverMessage);

服务器(Python):

import socket
UDP_IP_DEST = "10.0.0.11"
UDP_IP = "10.0.0.10"
UDP_PORT = 8088

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
if data:
print "received message:", data
sock.sendto("I got the message", (UDP_IP_DEST, UDP_PORT))

有人看出错误在哪里吗?重点是,我尝试将答案发送到另一台机器而不是移动设备,并且工作正常。

非常感谢。

最佳答案

我在接收时遇到了类似的问题,这是我们在应用程序中使用的一些代码,用于根据您的值修改的数据报,您可以看到我们在套接字设置中做了一些不同的事情。 mSocket只是一个私有(private)的DatagramSocket成员变量。试一试。我认为您可能需要绑定(bind),并可能设置重用地址标志。

try
{
mSocket = new DatagramSocket(null);
mSocket.setReuseAddress(true);
mSocket.setBroadcast(false);
mSocket.bind(new InetSocketAddress(8088));
//Set a 1.5 second timeout for the coming receive calls
mSocket.setSoTimeout(1500);

String data = "myData";
DatagramPacket udpPacket = new DatagramPacket(data.getBytes(), data.length(), InetAddress.getByName("10.0.0.10"), 8088);
mSocket.send(udpPacket);

byte[] buf = new byte[1024];
DatagramPacket recvPacket = new DatagramPacket(buf, buf.length);
mSocket.receive(recvPacket);

String response = new String(recvPacket.getData());
}
catch (SocketException e)
{
e.printStackTrace();
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}

关于java - 具有 Java 客户端和 Python 服务器的数据报套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27695075/

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