【发布时间】:2014-11-29 10:16:35
【问题描述】:
我还是个套接字新手,在创建 android 客户端和 c 服务器时遇到了一点问题。
c server 运行良好,android 客户端连接 c server 也很好。 但是在与服务器通信时出现问题。当我尝试发送一条简单的消息时,服务器似乎根本没有收到它。
所以这里是服务器等待消息的代码:
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();
}
好的,所以我发现出了什么问题,我实际上连接了两次服务器。 结果它无法通过正确的套接字发送消息。
对不起,感谢您的帮助
[/编辑]
通过查看此站点上的其他几篇帖子,我已经尝试了几种解决方案。
提前感谢您的所有帮助
【问题讨论】:
-
消息是客户端发送的吗?如何在服务器上调用 readMsg() 函数?
-
是的,消息是从客户端发送的,android 应用程序。
-
你能'telnet'到C服务器并让它打印你在telnet提示符下键入的内容吗?
telnet servername 1234其中 servername 和 1234 是您在其上运行 C 服务器的主机和 prorts... -
使用 telnet 可以正常工作,收到消息
-
@ScriptorTux 验证客户端发送消息