将字符串从控制台输入传递到tcp套接字

时间:2016-02-16 06:01:49

标签: java sockets tcp java.util.scanner

我有一个可以执行外部应用程序的软件,我试图用它来创建一个中间人与一个单独的系统进行通信。

要执行软件,我将给出路径c:\ TCPClient.jar /“Alarm created”

我想要做的是将参数从cmd行参数传递给套接字。所以C:\ TCPClient.jar /“发送此字符串”会将参数传递给输出流并将其发送到套接字。

import java.io.*;
import java.util.Scanner;
import java.net.*;
public class TCPClient {

public static void main(String[] args) {

    Socket tcpSocket = null;  
    DataOutputStream os = null;


    try {
        tcpSocket = new Socket("10.0.10.1", 445);
        os = new DataOutputStream(tcpSocket.getOutputStream());

    } catch (UnknownHostException e) {
        System.err.println("Hostname not found");
    } catch (IOException e) {
        System.err.println("Couldnt connect Check Listening port");
    }

if (tcpSocket != null && os != null) {
        try {
            String consoleInput;

           Scanner scanIn = new Scanner(System.in);
           consoleInput = scanIn.nextLine();

           scanIn.close();            

    os.writeBytes(consoleInput);    



   os.close();


        } catch (UnknownHostException e) {
            System.err.println("Trying to connect to unknown host: " + e);
        } catch (IOException e) {
            System.err.println("IOException:  " + e);
        }
    }
}           
}

1 个答案:

答案 0 :(得分:1)

如果在命令行中启动带有参数的程序,例如c:\TCPClient.jar "Alarm created",则参数将在main(String[] args)参数中传递给java程序。

您可以将其作为

写入DataOutputStream
if (args.length > 0) {
    os.writeBytes(args[0]);
}