पर आदेश भेजें मैं विंडोज एक्सपी पर जावा का उपयोग कर रहा हूं और टेलनेट जैसे किसी अन्य प्रोग्राम को कमांड भेजना चाहता हूं। मैं बस एक और प्रोग्राम निष्पादित नहीं करना चाहता हूं। मैं इसे निष्पादित करना चाहता हूं, और उसके बाद इसे चलाने के बाद इसे आदेशों का अनुक्रम भेजना चाहता हूं। यहां मेरा कोड है जो मैं करना चाहता हूं, लेकिन यह काम नहीं करता है: (यदि आप "cmd" को कमांड को बदलते हैं और बदलते हैं तो यह अपेक्षित काम करता है। कृपया मदद करें।) यह एक सरलीकृत उदाहरण है। उत्पादन में कई और आदेश भेजे जाएंगे, इसलिए कृपया "टेलनेट लोकहोस्ट" को कॉल करने का सुझाव न दें।जावा में, अन्य कमांड लाइन प्रोग्राम
try
{
Runtime rt = Runtime.getRuntime();
String command = "telnet";
//command = "cmd";
Process pr = rt.exec(command);
BufferedReader processOutput = new BufferedReader(new InputStreamReader(pr.getInputStream()));
BufferedWriter processInput = new BufferedWriter(new OutputStreamWriter(pr.getOutputStream()));
String commandToSend = "open localhost\n";
//commandToSend = "dir\n" + "exit\n";
processInput.write(commandToSend);
processInput.flush();
int lineCounter = 0;
while(true)
{
String line = processOutput.readLine();
if(line == null) break;
System.out.println(++lineCounter + ": " + line);
}
processInput.close();
processOutput.close();
pr.waitFor();
}
catch(Exception x)
{
x.printStackTrace();
}
तो आप जावा के लिए एक इंटर प्रोसेस संचार समाधान चाहते हैं? – Justin
ऐसा लगता है जैसे टेलनेट प्रक्रिया के इनपुट स्ट्रीम के अलावा किसी अन्य चीज़ को अपना आउटपुट लिख रहा है, और जावा इसे कैप्चर नहीं कर रहा है। Process.getInputStream() एकमात्र तरीका है जो पढ़ने के लिए एक प्रक्रिया है? – bradvido