C服务器未接收到java/android客户端消息



我对套接字还是个新手,在创建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=%sn", buffer);
    }
    printf("n=%dn", 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();
}

好吧,所以我发现了问题所在,事实上我已经连接了两次服务器。因此,它无法通过正确的套接字发送消息。

对不起,谢谢你的帮助

[/EDIT]

我已经尝试了几种解决方案,通过查看这个网站上的其他帖子。

提前感谢您的所有帮助

使用println而不是print,还将OutputStreamWriter封装在BufferedWriter

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

最新更新