【发布时间】:2012-08-15 15:10:26
【问题描述】:
我做了一个 Java Socket 服务器和一个 C++ 客户端。 但是,客户端连接到服务器,没有问题。 但是当我写一些客户端-服务器时,服务器没有捕捉到消息。 我做错了什么?
Java Server的一点点代码:
DataInputStream dis=new DataInputStream(usrSocket.getInputStream());
ByteArrayOutputStream out = new ByteArrayOutputStream();
int data;
while((data = dis.read())>=0) {
out.write(data);
}
byte[] bytes = out.toByteArray();
String decrypt = new String(bytes);
if(decrypt.equals("status")){
System.out.println("Status emitted.");
}
System.out.println("Received a message.");
C++客户端写法:
QByteArray qba;
qba.append(text);
sock->write(qba.data());
qDebug() << "Send status";
我需要帮助,非常感谢。 (那个变量“text”是一个QString)
编辑
Java 服务器:这只是所有代码的一部分,主线程等待连接(Socket sock = server.accept())并为每个用户创建一个新线程。 我发布的 Java 服务器代码,它是用户线程的一部分。 如果您需要所有代码,请告诉我。
我将等待答案! 非常感谢! 对不起,如果我回答你晚了。
【问题讨论】:
-
你在
ServerSocket对象上使用了accept()方法吗? -
发送数据需要flush吗?
-
我认为你遗漏了太多代码。
-
你在使用 QTcpSocket 吗?
-
您是否使用过诸如wireshark 之类的工具来查看系统的哪一半坏了——c++ 客户端发送数据,还是Java 服务器读取发送的数据?此外,服务器是否收到 nothing 或只是没有收到 complete 消息?