已解决:能够比我想象的更早进行测试。原来我的服务器端代码是正确的,而且我并没有经常检查客户端变量的变化。现在完美运作。努力让客户端自动接收服务器的更新
我正在使用服务器与客户端进行通信的端项目。每当java服务器向android客户端发送更新时,它都会在第一次运行时运行。之后,客户端不会注册服务器的消息,因为在第一次运行时,我已经关闭了套接字,所以我尝试了不同的方法。
我试图只通过flush()
的数据通过,只有当我完成读取数据时关闭它,但即使如此,flush()
不工作,除非我真的。我的最终目标是通过服务器发送数据,并在发送完成后立即在客户端显示该数据。我只是困惑于我如何不断关闭套接字或流(如果重要,我使用OutputStreamWriter),从服务器向客户端连续发送数据。
编辑:我忘了提及,但我确实意识到flush()确实将数据发送到客户端,它只是不更新客户端UI上的数据,直到关闭流为止。我试图让它自动更新
我现在不能发布我的代码,因为我几个小时都无法访问它。我试过的一些事情是setTcpNoDelay为true,并通过字节流发送&,但这不起作用。下面是一些伪代码,可以让您了解客户端和服务器的外观。
服务器:
Open the server socket and make the client socket accept the server socket
While the user doesnt quit...
Enter a value to send to the client and
try
sendData(). After that,
close the outputstreamwriter
sendData(String data) -
Declare an outputstreamwriter(Calling it out)
out.write(data)
out.flush()
客户:
BufferedReader takes an InputStreamReader parameter and gets the socket's inputStream
While the bufferedReader hasNext
String message = bufferedReader's input then
Display the data
bufferedReader.close()
编辑:从做一些研究,并在数据未立即使用,因为它是被缓冲送?如果这是对的,有没有办法加快这个过程?(对不起,如果这听起来很蠢)