Java c+;中套接字接收函数的第一个字符中的NUL值+;从android客户端发送数据时 我需要使用套接字和使用这个代码将Android客户端的数据传输到C++服务器。
我从Android客户端发送“ACK”,然后在服务器C++中重新调用NUL指针,然后再返回“ACK”。 接收消息[512]表示如下: 数据:Java c+;中套接字接收函数的第一个字符中的NUL值+;从android客户端发送数据时 我需要使用套接字和使用这个代码将Android客户端的数据传输到C++服务器。,java,android,c++,sockets,winsock,Java,Android,C++,Sockets,Winsock,我从Android客户端发送“ACK”,然后在服务器C++中重新调用NUL指针,然后再返回“ACK”。 接收消息[512]表示如下: 数据: messageString[0]= NUL messageString[1]= A; messageString[2]= C; messageString[3]= K; ACIII值: messageString[0]= 0 messageString[1]= 65; messageString[2]= 67; messageString[3]
messageString[0]= NUL
messageString[1]= A;
messageString[2]= C;
messageString[3]= K;
ACIII值:
messageString[0]= 0
messageString[1]= 65;
messageString[2]= 67;
messageString[3]= 75;
为什么我在C++的接收端接收到NUL?< /P>
当我在调试时,我意识到当我第二次收到一条消息时,它是正确的。但是NUL第一次出现在每一种新类型的消息中 错误图像: < C++服务器上的接收函数:< /P>
char messageString[512];
int result = recv(socket, messageString, strlen(messageString), 0);
发送到客户端:
public class AgentOutputChannel
{
Socket clientSocket = null;
OutputStream socketOutputStream = null;
static AgentOutputChannel outputChannel = null;
private AgentOutputChannel()
{
}
private AgentOutputChannel(Socket socket, OutputStream outStream)
{
clientSocket = socket;
socketOutputStream = outStream;
}
public static AgentOutputChannel GetOutputChannel(Socket socket, OutputStream outStream)
{
if(outputChannel == null)
{
outputChannel = new AgentOutputChannel(socket, outStream);
}
return outputChannel;
}
public void Send(byte[] message)
{
try
{
if(!clientSocket.isOutputShutdown())
{
socketOutputStream.write(message);
}
else
{
outputChannel = null;
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
应该改为
int result = recv(socket, messageString, sizeof(messageString), 0);
还可以尝试打印消息的每个字节的值
socketOutputStream.write(message);
为确保您没有传输空,ACK < /P> Android客户端没有发送任何空,但我在C++服务器端接收它。请使用<代码> sieOS/<代码>。你应该用它。如果Android客户端没有传输任何空值,那么
messageString[0]=
和messageString[0]=0
是什么?rhose`是什么?
是从文章中输入和编辑的。使用的大小也是一样的结果。我刚刚从android发送了“ACK”.getBytes(),在第一个数组节点接收到null。在调试和监视时,我已经给出了ASCII格式的messageString[0]和数据。在调试时,我意识到当我第二次收到消息时,它是正确的。但是第一次NUL是每种新消息的一种。错误图像:<代码>为什么我在C++中接收到NUL。< /代码>。你在哪里收到的?哪个变量是NUL?我们无法在Android代码中看到您发送的内容。请显示您是如何建立消息的。“ACK.getBytes()”我像发送一样传递这个消息(“ACK.getBytes());错误图像:
messageString[0]=
和“ACII”是什么意思?请澄清你的问题。我在帖子中分享了一张图片。你可以明白我在说什么。
socketOutputStream.write(message);