我仍然是新的套接字,并且在创建一个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();
}
好的,所以我发现了什么问题,实际上我连接了两次到服务器。 因此,它无法通过正确的套接字发送消息。
对不起,谢谢你的帮助
[/编辑]
我已经通过查看本网站上的其他几篇文章尝试了几种解决方案。
提前感谢您的所有帮助
答案 0 :(得分:1)
使用println
代替print
,同时将OutputStreamWriter
包裹在BufferedWriter
pw = new PrintWriter(new BufferedWriter(osw), true);
pw.println(msg);