我想使用TCP Socket发送一些数据; 键盘输入没问题。 重定向二进制文件也很好。 但 当我将/ dev / urandom重定向到stdin(java prog< / dev / urandom)时没有任何反应,没有错误,没有数据发送。
public class P1{
static DataInputStream dis = new DataInputStream(System.in);
int port = 12345;
String host = "127.0.0.1";
Socket p1Socket;
DataOutputStream out;
byte data;
void run() {
try{
p1Socket = new Socket( host, port );
out = new DataOutputStream(p1Socket.getOutputStream());
while (dis.available() >0){
data = dis.readByte();
out.write ( data );
}
out.flush();
out.close();
p1Socket.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]) throws IOException {
P1 p1 = new P1();
while (dis.available() <=0);
p1.run();
}
}
答案 0 :(得分:0)
不要使用available
方法,它只会告诉您是否可以在不阻塞的情况下读取内容,这是非常无用的。改为使用无限循环。
while (true) {
data = dis.readByte();
out.write(data);
}
使用EOFException
发出文件结束信号。确保在抛出异常时关闭文件。