使用套接字发送和接收

时间:2013-11-01 21:49:59

标签: java sockets

我正在努力发送和接收来自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();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果你想要一个角色你不能使用readLine(),对吧?我也不会使用Scanner。一次只读一个字符。您应该使用BufferedReader和BufferedWriter。