【问题标题】:Sending and receiving with sockets使用套接字发送和接收
【发布时间】:2013-11-13 04:43:03
【问题描述】:

我正在用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();
        }
    }
}

【问题讨论】:

    标签: java sockets


    【解决方案1】:

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

    【讨论】:

    • 服务器应该先发送整个字符串,然后我将第一个字符发送回服务器。服务器然后发送第二个字符,然后我发送第三个字符。等等等等。不发送字符串的最后一个字符的人发送“完成!”。我只是不知道我将如何实现它
    • 这很奇怪。我刚刚告诉你如何实现它。
    猜你喜欢
    • 1970-01-01
    • 2010-11-14
    • 2016-02-21
    • 2013-04-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多