为了账号安全,请及时绑定邮箱和手机立即绑定

BufferedReader 取终端输入字符

BufferedReader 取终端输入字符

幕布斯7119047 2021-09-15 16:14:51
我正在 Java 中实现套接字编程,其中我使用 BufferedReader 从客户端获取输入。但是,BufferedReader 对象采用在控制台上输入的换行符。这是我的服务器端代码:import java.net.*;import java.io.*;class FTPserver {private ServerSocket serverSocket = null;private DataInputStream dis = null;private DataOutputStream dos = null;FTPserver() {    try {        String input;        serverSocket = new ServerSocket(3000);        Socket socket = null;        socket = serverSocket.accept();        dis = new DataInputStream(socket.getInputStream());        dos = new DataOutputStream(socket.getOutputStream());        input = dis.readUTF();        if(input.equals("ftp")) {            dos.writeUTF("ftp> ");            input = dis.readUTF();            System.out.print("opened connection to 10.10.10.212");            dos.writeUTF("Connected to 10.10.10.212\n220 (vsFTPd 3.0.2)\nName (10.10.10.212:root): ");            input = dis.readUTF();            dos.writeUTF("331 Please specify the password.\nPassword: ");            input = dis.readUTF();            dos.writeUTF("230 Login successful.\nRemote system type is UNIX\nUse binary mode to transfer files\nftp> ");            input = dis.readUTF();       //receive mget            dos.writeUTF("ftp> ");            input = dis.readUTF();       //receive mput            dos.writeUTF("ftp> ");            //input = dis.readUTF();            input = dis.readUTF();       //receive exit            dos.writeUTF("Goodbye");            input = dis.readUTF();       //receive exit            dos.writeUTF("Goodbye");        }        dis.close();        dos.close();        socket.close();    }    catch(Exception e) {        e.printStackTrace();    }}public static void main(String[] args) {    FTPserver ftp = new FTPserver();}}这是我的客户端代码:import java.net.*;import java.io.*;import java.util.Scanner;class FTPclient {private DataInputStream dis = null;private DataOutputStream dos = null;private Socket socket = null;
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

我假设“跳过”是指“退出”一词打印在下一行,而不是像前几行那样直接打印在“ftp>”之后。如果是这样,我认为发生这种情况的原因是因为您在客户端的这些行中使用 System.out.println 而不是像前几行那样使用 System.out.print。我认为您的输入正确终止,因为您的程序似乎正确结束并且不会继续等待进一步的输入。


    dos.writeUTF(sc.readLine());            //send exit

    System.out.println(dis.readUTF());

    dos.writeUTF(sc.readLine());             //send exit

    System.out.println(dis.readUTF());


查看完整回答
反对 回复 2021-09-15
  • 1 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信