Frage : Java TCP - Decaprecated Code

O.K. also ich erhielten einen Klienten und einen Bediener. Der Code jedoch geregelt oben und er kompiliert ohne Störungen. Ich ersetze gerade DataStreamInput durch BufferedReader, jedoch, das der Ausgang nicht bearbeitet. Der Bediener scheint nicht, zu senden den Klienten…. können Sie Kerle helfen?

Server.java:

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
import java.io.*;
Import java.net. *;
Import java.util.*;

allgemeiner Kategorie Bediener {

    statisches EinfaßungsclientSocket = -null;
    statisches ServerSocket serverSocket = Null;

	statisches clientThread t [] = neues clientThread [10];


    allgemeine Staticlückenhauptleitung (Schnur args []) {

	// der Rückstellungshafen



	int port_number=2222;

	wenn (args.length < 1)
	    {
		System.out.println („Verbrauch: Java-Bediener \ n " +
				   „Jetzt using Portnumber= " +port_number);
	    } sonst {
		port_number=Integer.valueOf (args [0]) .intValue ();
	    }

        Versuch {
	    serverSocket = neues ServerSocket (port_number);
        }
        Fang (IOException e)
	    {System.out.println (e);}

	während (zutreffend) {
	    Versuch {
		clientSocket = serverSocket.accept ();
		für (int i=0; i<=9; i++) {
		    wenn (t [i] ==null)
			{
			    (t [i] = neues clientThread (clientSocket, t)) .start ();
			    Bruch;
			}
		}
	    }
	    Fang (IOException e) {
		System.out.println (e);}
	}
    }
}

Kategorie clientThread verlängert Gewinde {

    BufferedReader ist = Null;
    PrintStream OS = Null;
    EinfaßungsclientSocket = -null;
    clientThread t [];
    Gelegentliche Rolle = neues gelegentliches ();

    allgemeines clientThread (Einfaßung clientSocket, clientThread [] t) {
	this.clientSocket=clientSocket;
        this.t=t;
    }

    Öffentlichkeitslücke laufen ()
    {
		System.out.println („Überprüfung 1“);
	Schnurlinie;
        Schnurname;
        int PY;
	Versuch {
		System.out.println („Überprüfung 2“);
	    = ist neues BufferedReader (neues InputStreamReader (clientSocket.getInputStream ()));
	    System.out.println („Überprüfung 3“);
	    OS = neues PrintStream (clientSocket.getOutputStream ());
	    System.out.println („Überprüfung 4“);
	    int px = roll.nextInt (6);
	    os.println („Ihr name.") eintragen;
	    System.out.println („Überprüfung 5“);
	    Name = is.readLine ();
	    System.out.println („Überprüfung 6“);

	    os.println („hallo „+name+“ zu unserem Chat-Room. Ihr Angriff: “ + anmelden px + „\ nicht Urlaub /quit in eine neue Linie“));
	    für (int i=0; i<=9; i++)
		wenn (t [i]! =null && t [i]! =this)
		    t [i] .os.println („*** betrat A neuer Benutzer „+name+“ den Chat-Room!!! *** ");
	    während (zutreffend) {
		Linie = is.readLine ();
                wenn (line.startsWith („/quit“)) Bruch;
		für (int i=0; i<=9; i++)
		    wenn (t [i]! =null) t [i] .os.println („< " +name+“: „+px+ " > „+line);
	    }
	    für (int i=0; i<=9; i++)
		wenn (t [i]! =null && t [i]! =this)
		    t [i] .os.println („*** der Benutzer „+name+“ lässt den Chat-Room!!! *** ");

	    os.println („*** Tschüss „+name+“ *** ");

	    für (int i=0; i<=9; i++)
		wenn (t [i] ==this) t [i] =null;

	    is.close ();
	    os.close ();
	    clientSocket.close ();
	}
	Fang (IOException e) {};
    }
} 


For diese Akte,…, das es funktionierte, aber es war so missbilligt ich changed

1:
is = neues DataInputStream (clientSocket.getInputStream ());

to
1:
is = neues BufferedReader (neues InputStreamReader (clientSocket.getInputStream ()))


and DataInputStream == Null zu BufferedReader ist, ist == null.

Client.java

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
import java.io.*;
Import java.net. *;

allgemeiner Kategorie Klient einführt jagdbares {es

    statisches EinfaßungsclientSocket = -null;
    statisches PrintStream OS = Null;
    statisches DataInputStream ist = Null;
    statisches BufferedReader inputLine = Null;
    statisches Boolesches geschlossenes = falsch;

    allgemeine Staticlücke hauptsächlich (Schnur [] args) {

	// der Rückstellungshafen

	int port_number=2222;
        Schnur host= " localhost ";

	wenn (args.length < 2)
	    {
		System.out.println („Verbrauch: Java-Klient \ n " +
				   „Jetzt using host= " +host+“, port_number= " +port_number);
	    } sonst {
		host=args [0];
		port_number=Integer.valueOf (args [1]) .intValue ();
	    }

	Versuch {
            clientSocket = neue Einfaßung (Wirt, port_number);
            inputLine = neues BufferedReader (neues InputStreamReader (System.in));
            OS = neues PrintStream (clientSocket.getOutputStream ());
            = ist neues DataInputStream (clientSocket.getInputStream ());
        } Fang (UnknownHostException e) {
            System.err.println („nicht in Wirt „+host auskennen);
        } Fang (IOException e) {
            System.err.println („könnte Input/Output für den Anschluss zum Wirt „+host nicht erhalten);
        }

        wenn (clientSocket! = ungültiges && OS! = ist ungültiges &&! = Null) {
            Versuch {

                neues Gewinde (neuer Klient ()).start ();

		während (! geschlossen) {
                    os.println (inputLine.readLine ());
                }

		os.close ();
		is.close ();
		clientSocket.close ();
            } Fang (IOException e) {
                System.err.println („IOException:  “ + e);
            }
        }
    }

    Öffentlichkeitslücke laufen () {
	Schnur responseLine;

	//-Unterhalt auf dem Ablesen von der Einfaßung, bis wir das „Tschüss“ vom Bediener empfangen,
	//, sobald wir empfingen, dass dann wir brechen möchten.
	Versuch {
		System.out.println („Tryin.g… ");
	    während ((responseLine = inputLine.readLine ()) ! = Null) {
		System.out.println (responseLine);
		wenn (responseLine.indexOf („*** Tschüss“)! =) Bruch -1;
	    }
            closed=true;
	} Fang (IOException e) {
	    System.err.println („IOException:  “ + e);
	}
    }
} decaprecated 


For Client.java, auch Code außerdem, also entfernte ich:

1:
is = neues DataInputStream (clientSocket.getInputStream ());


and jede mögliche Linie durch ersetzte, ist zu inputLine.

Can Sie dieses regeln?

Antwort : Java TCP - Decaprecated Code

Neunmal aus 10 heraus liegen diese Probleme am Mangel an Korrdination zwischen Klienten schreibt und Bediener liest und umgekehrt. Zum Beispiel wegen der blockierenden Ströme, verriegelt Ihr Programm oben, wenn es versucht, zu lesen, wann nichts geschrieben worden noch sein.

Ich vorschlage ch, dass Sie Ihren Code mit einem feingezahnten Kamm für diese Art des Probleme durchlaufen
Weitere Lösungen  
 
programming4us programming4us