C服务器没有收到java / android客户端消息

时间:2014-10-04 15:52:31

标签: java android c sockets

我仍然是新的套接字,并且在创建一个Android客户端和c服务器时遇到一些问题。

c服务器运行良好,android客户端也很好地连接到c服务器。 但是在与服务器通信时会出现问题。当我尝试发送一条简单的消息时,服务器似乎根本没有收到它。

所以这是等待消息的服务器的代码:

void readMsg(int client){
    char buffer[1024];
    int n = 0;

    memset(buffer, 0, sizeof(buffer));

    printf("waiting for message..\n");
    while(( n=recv(client, buffer, sizeof buffer - 1, 0)) > 0){
        printf("recv=%s\n", buffer);
    }

    printf("n=%d\n", n);
}

一切都没有显示出来。它已被waiting for message..阻止。

关于发送消息的java代码,这里是:

OutputStreamWriter osw;
PrintWriter pw;
try {
    osw = new OutputStreamWriter(server.getOutputStream(), "UTF-8");
    pw = new PrintWriter(osw, true);
    pw.print(msg);
    pw.flush();

}catch(IOException ioe) {
    ioe.printStackTrace();
}

[编辑]

只是为了提供更多信息,在启动服务器和客户端连接后立即调用函数readMsg()

有关详细信息,请按以下方式连接到服务器:

try{
   //I am sure that the host and port are correct
   Socket server = new Socket(host, port);

}catch(IOException ioe){
    ioe.printStackTrace();
}

好的,所以我发现了什么问题,实际上我连接了两次到服务器。 因此,它无法通过正确的套接字发送消息。

对不起,谢谢你的帮助

[/编辑]

我已经通过查看本网站上的其他几篇文章尝试了几种解决方案。

提前感谢您的所有帮助

1 个答案:

答案 0 :(得分:1)

使用println代替print,同时将OutputStreamWriter包裹在BufferedWriter

pw = new PrintWriter(new BufferedWriter(osw), true);
pw.println(msg);