java套接字可以在不占用接收套接字的情况下进行多次背靠背写入吗?

时间:2017-01-30 15:33:42

标签: java android sockets

我对套接字编程很新。我注意到BufferedReader.readln()阻塞,直到有一些东西可以从另一端读取,但PrintWriter.println()只会抛出像忍者星一样的数据。

我在互联网上看到的大多数套接字示例都是简单的读写 - 读写程序。

如果我的程序有服务器调用println()多次发送不同的字符串,并且客户端套接字需要读取每一行并处理之间的字符串每次读取,是服务器可能用数据压倒客户端吗?有些数据最终会丢失吗?

是否必须设置"响应"在我的程序中的一种逻辑,即服务器发送数据并等待"继续"在继续之前来自客户?

这也与使用的InputStream / OutputStream实现(如数据或对象输入/输出流)有所不同吗?

我不知道这是否有所不同,但这些是我在Android应用中运行的程序。

2 个答案:

答案 0 :(得分:0)

这些都是TCP规范为您解决的。解释起来真的很复杂,但TCP中的算法用于处理发送和接收窗口大小,指数退避和恢复,接收数据的确认等。除非您处理类似的事情实时视频流,延迟是一个问题,你不必担心它。

答案 1 :(得分:0)

没有。如果发送方超出接收方,它将在阻塞模式下阻塞,或在非阻塞模式下获得零长度写入。这发生在TCP中,而不是Java。