Schließen socket-Verbindung nach Erhalt stream - java

Machte ich einen tcp-server, der nimmt einen Dateinamen vom client aus und Lesen Sie den Inhalt der Datei auf dem server gespeichert und dann übertragen Sie Sie an den client zurück.

Ich habe auch einen client, um die Datei zu empfangen. Mein problem ist, nach dem Empfang der Datei auf dem client, wie kündige ich die Schleife, so kann ich die Verbindung schließen?

Hier ist der server-code:

import java.io.*;
import java.net.*;
import java.util.*;

public class WebTCPServer_file {
    public static void main(String argv[]) throws Exception{
        String request;
        ServerSocket welcomeSocket = new ServerSocket(6790); //opening socket
        while(true){
            Socket connectionSocket = welcomeSocket.accept();
            Scanner inFromClient = new Scanner(connectionSocket.getInputStream());
            DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
            request = inFromClient.nextLine(); //client request
            System.out.println("Received: "+request);

            /*dividing request command*/
            String reqMeth = request.substring(0, 3);
            String reqURL = request.substring(5, (request.lastIndexOf("HTTP/1.1")));
            String reqProto = request.substring(request.indexOf("HTTP/1.1"));
            System.out.println("Request Method:\t" +reqMeth +"\nRequest URL:\t" +reqURL+ "\nRequest Protocol: " +reqProto);

            File localFile = new File(reqURL.trim());
            FileReader in = new FileReader(localFile);
            BufferedReader inBuff = new BufferedReader(in);


            String c;
            while((c = inBuff.readLine())!=null){                   
                outToClient.writeBytes(c + '\n');                   
                System.out.println(c);
            } //END while
            outToClient.flush();
            in.close();


        } //END while(true)
      } //END main
} //END class

Hier ist der client-code:

import java.io.*;
import java.net.*;
import java.util.*;
public class TCPClient_file {

    public static void main(String[] args) throws Exception{
        String sentence ;
        Scanner inFromUser = new Scanner(System.in);
        Socket clientSocket = new Socket("192.168.0.16", 6790);
        DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());

        BufferedReader inFromServer = new BufferedReader(
                            new InputStreamReader(
                                    clientSocket.getInputStream()));

        sentence = inFromUser.nextLine();

        outToServer.writeBytes(sentence + '\n');

        String serverfile;

        while ((serverfile = inFromServer.readLine()) != null) 
            System.out.println(serverfile);

        inFromServer.close();   
        outToServer.close();
        clientSocket.close();
    }   //END main

}   //END class

Client-Anfrage vom server als solche:

GET /domains.txt HTTP/1.1

wo "domains.txt" ist eine Datei auf dem server mit einer Liste von websites.

  • Sie sollten nicht Leser und Schreiber, es sei denn, Sie wissen, die Datei ist text. Verwenden InputStreams und OutputStreams: Sie arbeiten für alle Dateien.
InformationsquelleAutor user2114721 | 2013-02-27
Schreibe einen Kommentar