比BufferedReader.readLine()更好的方法?
使用ServerSocket
和BufferedReader.readLine()
只有在客户端的线路终止时才会读取输入,是否有读取输入并在线路终止之前发送输出?比BufferedReader.readLine()更好的方法?
ServerSocket SRVSOCK = new ServerSocket(35553);
while(true){
Socket SOCK = SRVSOCK.accept();
InputStreamReader IR = new InputStreamReader(SOCK.getInputStream());
BufferedReader BR = new BufferedReader(IR);
String MESSAGE = BR.readLine();
PrintStream PS = new PrintStream(SOCK.getOutputStream());
System.out.println(MESSAGE);
PS.print("Returned Successfully");
}
你可以用bufferedReader.read()
去将返回值一个字符时
StringBuffer response = "";
while ((c = bufferedReader.read()) != -1)
{
//Since c is an integer, cast it to a char. If it isn't -1, it will be in the correct range of char.
response.append((char)c) ;
}
如果你用这种方法去,就看你要弄清楚的时候就可以开始解析结果并发送回复。
我不擅长char,response.append说_方法append(char)对于String_类型是未定义的。响应是一个字符串? – user2186161 2013-03-19 11:19:38
它应该是(请参见示例中的定义) – 2013-03-19 11:20:48
我意识到我忘记了大写'String' – 2013-03-19 11:21:11
它工作得很好,thx :) – user2186161 2013-03-19 11:37:53
这是肯定不坏,链接到现有的答案!如果它是你的或不是无关紧要,只要它对实际问题有贡献。 – user905686 2013-03-19 12:41:24
如何被发送的数据?它是否在客户端缓冲? – dacwe 2013-03-19 11:07:37
@dacwe这是我不知道的部分,我所知道的是当客户端终止该线时服务器收到数据。 – user2186161 2013-03-19 11:21:15
@ user2186161只是根据java代码约定的一个建议变量跟随类似于句子的情况,即在双变量的情况下新词的首字母大写。你可以使用例如:ServerSocket serverSocket = new ServerSocket(35553);毕竟,遵循代码惯例是很好的,而不是所有的资本变量。 – Lakshmi 2013-03-19 11:37:51