gpt4 book ai didi

java - BufferedReader如何与套接字交互?关于套接字的工作方式

转载 作者:行者123 更新时间:2023-12-03 12:02:50 26 4
gpt4 key购买 nike

我一直在遵循有关如何在Java中构建简单聊天应用程序的教程。我了解了服务器与客户之间如何通信的基本原理。到目前为止,我已经使用PrintWriter发送,并且使用BufferedReader接收双方的信息。但是我没有得到的是这怎么不会导致错误呢?

Socket soc = new Socket(ipAddress, port);
BufferedReader in = new BufferedReader( new InputStreamReader(soc.getInputStream));
while(true) {

String str = in.readLine();

}

我的问题如下。 in.readLine()语句是否在“等待”输入?如果没有,那么使用 str时程序没有值,是否应该引发错误?或一般来说,套接字特定的功能(例如 Socket soc = serverSocket.accept();)还是上面给出的示例中的InputStream读取信号“等待”是什么呢?我是否错过了一些关于 socket 的基本概念?如果有人可以帮助我进一步理解该主题,那就太好了。

先感谢您,

阿帕

最佳答案

My question would be the following. Is the in.readLine() statement "waiting" for input?



是的,因为 .readLine()是一种阻止方法,所以它是“等待输入”

If it does not, shouldn´t the program throw Errors if using the str since it has no value?



我无法解析-声明没有道理。您期望什么错误/异常?

Or in general terms, do Socket specific functions like Socket soc = serverSocket.accept(); or as in the example given above the reading of an InputStream "wait" for a signal whatsoever?



同样,我担心这还不太清楚(至少对我而言)。 ServerSocket#accept()是一种阻止方法,如果您要这样做,它将等待直到建立套接字连接为止。

请注意此代码:
while(true) {
String str = in.readLine();
}

有效时,它并不是特别有用,因为您将读取一个String然后将其丢弃,对此不进行任何操作。最好打印获得的String,或者将其传递到可以某种方式使用它的方法中。另一方面,我想如果您要做的只是“吞噬”流以防止OS的缓冲区溢出,那么这可能会很有用。

关于java - BufferedReader如何与套接字交互?关于套接字的工作方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61044121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com