Java中的套接字和流
我已经构建了一个客户机-服务器应用程序,两者通过套接字和流进行通信。 我的服务器创建以下流:Java中的套接字和流,java,sockets,stream,Java,Sockets,Stream,我已经构建了一个客户机-服务器应用程序,两者通过套接字和流进行通信。 我的服务器创建以下流: this.out = new DataOutputStream(sock.getOutputStream()); this.in = new DataInputStream(sock.getInputStream()); this.bufread = new BufferedReader(newInputStreamReader(sock.getInputStream())); 然后从InputStr
this.out = new DataOutputStream(sock.getOutputStream());
this.in = new DataInputStream(sock.getInputStream());
this.bufread = new BufferedReader(newInputStreamReader(sock.getInputStream()));
然后从InputStream中读取如下内容:
type = this.in.readByte();
String name = this.bufread.readLine();
最后,客户机写入OutputStream,如下所示:
DataOutputStream out = new DataOutputStream(MyClient.getOutputStream());
out.writeByte(17);
out.writeBytes("value\n");
我正在从客户端发送字节,而服务器正在读取字节。如果我从客户端发送char、int或任何其他内容,它仍然会从服务器读取为字节吗?使用的特定函数是否确保读取的数据类型?不能将同一InputStream包装到两个不同的对象(DataInputStream和InputStreamReader)中。他们彼此不了解,会干扰彼此的运作 将套接字的InputStream封装在一个对象中。因为您需要读取原始字节,所以DataInputStream最有意义 正如您可能已经看到的,您不能使用,因为它已被弃用。不要试图忽略这种不赞成,无论如何都要使用它;不推荐使用它是因为它不能正确处理字符
理想情况下,您应该改为使用该方法,但必须确保服务器正在使用发送字符数据以使其正常工作。不能将相同的InputStream包装到两个不同的对象(DataInputStream和InputStreamReader)中。他们彼此不了解,会干扰彼此的运作 将套接字的InputStream封装在一个对象中。因为您需要读取原始字节,所以DataInputStream最有意义 正如您可能已经看到的,您不能使用,因为它已被弃用。不要试图忽略这种不赞成,无论如何都要使用它;不推荐使用它是因为它不能正确处理字符 理想情况下,您应该改用该方法,但必须确保服务器正在发送字符数据,以使其正常工作