0

我正在用java从客户端和服务器发送和接收,现在我很难过。

客户端套接字将通过“localhost”端口 4321 联系服务器。客户端将从服务器接收一个字符串,并与服务器交替拼写该字符串的内容。例如,给定字符串“Bye Bye”,客户端(总是开始发送第一个字母)发送“B”,接收“y”,发送“e”,接收“”,发送“B”,接收“y” ,发送“e”,然后接收“done!”,这是客户端或服务器在收到原始字符串的最后一个字母后将发送的字符串。在“完成!”之后 传输时,客户端和服务器都关闭它们的通信。

我将如何获取第一个字符串,然后来回发送和接收构成字符串的字母,完成后发送或完成!?

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Program2 {
    public static void goClient() throws UnknownHostException, IOException{
        String server = "localhost";
        int port = 4321;

        Socket socket = new Socket(server, port);
        InputStream inStream = socket.getInputStream();
        OutputStream outStream = socket.getOutputStream();
        Scanner in = new Scanner(inStream);
        PrintWriter out = new PrintWriter(outStream, true);

        String rec = "";
        if(in.hasNext()){
            rec = in.nextLine();
        }
        char[] array = new char[rec.length()];
        for(int i = 0; i < rec.length(); i++){
            array[i] = rec.charAt(i);
        }

        while(in.hasNext()){
            for(int x = 0; x < array.length + 1; x+=2){
                String str = in.nextLine();
                str = Character.toString(array[x]);
                out.println(str);
            }
            in.close();
            socket.close();
        }
    }
}
4

1 回答 1

0

如果您一次想要一个字符,则不能使用 readLine(),对吗?我也不会使用扫描仪。一次只读取一个字符。您应该使用 BufferedReader 和 BufferedWriter。

于 2013-11-01T21:58:01.673 回答