簡體   English   中英

使用套接字發送和接收

[英]Sending and receiving with sockets

我正在使用java中的客戶端和服務器發送和接收消息,此刻我很困惑。

客戶端套接字將通過“本地主機”端口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();
        }
    }
}

如果您一次想要一個字符,則不能使用readLine(),對嗎? 我也不會使用Scanner。 一次只讀一個字符。 您應該使用BufferedReader和BufferedWriter。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM