Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的套接字和流_Java_Sockets_Stream - Fatal编程技术网

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最有意义

正如您可能已经看到的,您不能使用,因为它已被弃用。不要试图忽略这种不赞成,无论如何都要使用它;不推荐使用它是因为它不能正确处理字符

理想情况下,您应该改用该方法,但必须确保服务器正在发送字符数据,以使其正常工作