【发布时间】:2019-06-02 07:18:02
【问题描述】:
我是 Socket 操作的新手,我目前正在使用我的 Java 客户端与我的 C 服务器进行通信,但我在从我的服务器读取数据时遇到了一点问题。
当我启动我的服务器时,它会正确返回整个数据(我从我的 Java 客户端发送一个 SQL 请求,但每当我尝试使用 DataInputStream 从我的客户端读取它时。
当我启动它时,我基本上试图在我的应用程序的右侧显示用户名,向服务器发送一个 SQL 请求“SELECT username FROM username WHERE status='online'”,C 服务器发送一个响应: “青木 安托万"
当我尝试使用 readLine(); 读取数据时;在一段时间循环中,我只显示“Aoisuki”用户名。
我认为没有必要向您展示我的 C 服务器代码,因为我已经尝试过使用 C 客户端并且一切正常。
这是我来自客户端的 Java 代码:
public String recvMsg() throws IOException {
s = new Socket(addr,port);
din = new DataInputStream(s.getInputStream());
d = new BufferedReader(new InputStreamReader(din));
StringBuilder result = new StringBuilder();
String tmp = "";
try {
while(((tmp=d.readLine())!=null)){
result.append(tmp);
d.wait();
}
} catch(Exception e){
....
}
return result.toString();
}
我已经尝试将“d.wait()”放在 while 循环之后,但我遇到了另一个问题:我的客户端在服务器关闭之前没有启动,但我同时显示了两个用户名(这就是我想要)
任何帮助将不胜感激。
【问题讨论】: