我正在编写一个小型客户端应用程序以与服务器通信。我在客户端和服务器之间打开了一个套接字,并且可以使用BufferedReader读取从服务器发出的所有内容。这是在线程中读取的。但是,当我使用BufferedReader在套接字上写时,什么也没发生!没有例外,但没有任何服务器响应(并且应该有服务器响应)这是我的代码:
socketWritter.write(message);
socketWritter.write("\n");
System.out.println(socketWritter.toString());
socketWritter.flush();
我的套接字已正确打开,并且mu BufferedWriter已正确初始化:
new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))
我不知道为什么这不起作用?任何帮助将是巨大的!问候
您的代码是正确的。我使用通用服务器进行了测试,该服务器将响应客户端发送的所有内容,并且工作正常(无更改)。您使用的服务器可能有故障。我注意到的一件事是,对于我的服务器,每次写入输出流时,都需要添加一个换行符,以便它实际发送数据。我敢打赌,这就是您的GUI没有收到任何东西的原因。这是我服务器上的客户端线程类:
class ClientThread extends Thread {
private Socket sock;
private InputStream in;
private OutputStream out;
ClientThread( Socket sock ) {
this.sock = sock;
try {
this.in = sock.getInputStream();
this.out = sock.getOutputStream();
} catch ( IOException e ) {
e.printStackTrace();
}
}
//Echos whatever the client sends to it
public void run() {
BufferedReader bufIn = new BufferedReader( new InputStreamReader( in ) );
BufferedWriter bufOut = new BufferedWriter( new OutputStreamWriter( out ) );
while ( true ) {
try {
String msg = bufIn.readLine();
System.out.println( "Received: " + msg );
bufOut.write( msg );
bufOut.newLine(); //HERE!!!!!!
bufOut.flush();
} catch ( IOException e ) {
e.printStackTrace();
}
}
}
}
问题内容: 我正在做一个实验,我们必须读取一个外部文件,对数据进行一些统计,然后使用统计信息创建和写入新文件。除了编写文件,程序中的所有内容都可以正常工作,我无法理解为什么我的方法不起作用。 问题答案: 您必须冲洗并关闭编写器:
主要内容:1 什么是Java BufferedWriter,2 Java BufferedWriter的语法,3 Java BufferedWriter的构造方法,4 Java BufferedWriter的方法,5 Java BufferedWriter的例子1 什么是Java BufferedWriter Java BufferedWriter类用于为Writer实例提供缓冲。它使性能更快。它继承了Writer类。缓冲字符用于有效地写入单个数组,字符和字符串。 2 Java Buffered
问题内容: 我有以下代码: 不,我检查了myLines的内容,这些是正确的。 另外,我得到的印刷品会尽可能频繁地打印“完成”。csv已创建。 但是,如果我手动打开它,它是空的。 这可能是什么原因? 问题答案: 您从不刷新缓冲区或关闭BufferedWriter。 在for循环之后,进行以下调用: 即使有其他资源,在完成后关闭它们也是一个好主意。
问题内容: 我有以下代码,我想使输出流使用utf-8。基本上我有这样的字符,所以看起来像是编码问题。 我看过很多使用…的例子 我当前的代码是… 是否可以在不必使用OutputStreamWriter的情况下将此对象定义为UTF-8? 谢谢, 问题答案: 否。您不能指定编码,这非常烦人。它始终使用系统默认编码。只是吸起来,并使用包装一个。当然,您仍然可以将OutputStreamWriter包装在B
这两者有什么区别?我只是在学习Java ATM,但似乎我可以双向写入文件,即(我没有复制try-catch块) 和 我理解先缓冲数据的概念,那么这是否意味着第一个示例逐个写入字符,第二个示例先将其缓冲到内存中并写入一次?
问题内容: 我必须从用户那里获取用户的名称和地址,并将其放入文本文件中。我写以下代码: 当我运行代码时,它需要用户输入,但文本文件为空。地址和名称未写入文本文件。如何在上面的代码中将名称和地址存储到文本文件中。 问题答案: 您创建的,但从来没有或它。 这些操作是实际写入文件的操作 正如@ManoDestra在注释中指出的那样,Java支持statement,它允许您将语句的格式设置为: 由于实现了