Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java c+;中套接字接收函数的第一个字符中的NUL值+;从android客户端发送数据时 我需要使用套接字和使用这个代码将Android客户端的数据传输到C++服务器。_Java_Android_C++_Sockets_Winsock - Fatal编程技术网

Java c+;中套接字接收函数的第一个字符中的NUL值+;从android客户端发送数据时 我需要使用套接字和使用这个代码将Android客户端的数据传输到C++服务器。

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]

我从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]= 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);