2016-07-11 5 views
0

Für seine Partner-App habe ich den Client-und Server-Code und die Ports. Lief diese beiden Codes in zwei getrennten Terminals. Sie konnten sich miteinander verbinden, aber ich konnte keine Nachricht von einem Terminal zum anderen senden.Java-basierte 2-Wege-Chat-Anwendung funktioniert nicht

import java.net.*; 
import java.io.*; 
import java.util.Scanner; 
class ChatHead1 
{ 
public static void main()throws Exception 
{ 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

    //Client 
    Socket sock = new Socket("127.0.0.1", 2000); 
    OutputStream ostream = sock.getOutputStream(); 
    DataOutputStream dos = new DataOutputStream(ostream); 
    System.out.print("\nYou:"); 
    String message1 = br.readLine(); //Inputting Message For Sending 
    dos.writeBytes(message1); 

    //Server 
    ServerSocket sersock = new ServerSocket(5000); 
    System.out.print("\nThem: "); 
    Socket sockServ = sersock.accept(); 
    InputStream istream = sockServ.getInputStream(); 
    DataInputStream dstream = new DataInputStream(istream); 
    String message2 = dstream.readLine(); 
    System.out.println(message2); //Printing Received Message 

    //Client Close 
    dos.close(); 
    ostream.close(); 
    sock.close(); 

    //Server Close 
    dstream .close(); 
    istream.close(); 
    sockServ.close(); 
    sersock.close(); 
} 
} 
+0

"Terminal?" Könntest du genauer sein, ein "Terminal" bedeutet für mich VT100, aber ich bezweifle, dass du Java auf einem verwendest. Was genau ist Ihre Hardware- und Netzwerkkonfiguration und welche Fehler bekommen Sie, wenn Sie sagen, dass es nicht funktioniert? – markspace

+0

@markspace, mit Terminal meine ich Command Prompt. Entschuldigung für das unpassende Wort. Funktioniert es aber, indem ich den Ausgabestream vor dem Start des Eingabestreams schließe .. Danke für eine schnelle Antwort ..: D –

Antwort

0

Ich würde vorschlagen, dass Sie nur, weil sein ein Server/Client, eine Zwei-Wege-Verbindung verwendet werden soll.
Ich sehe nicht wirklich, warum Sie einen Client und einen Server verwenden.

Versuchen dos.flush(); nach dos.writeBytes(message1);

+0

Client und Server ist nur die Terminologie, die ich verwendet habe, um den Code zu bezeichnen, der die Nachricht sendet und empfängt. Wenn ich den * Client * -Code verwende und InputStream nicht verwende, wie kann ich Nachrichten empfangen? –

+0

Nevermind, hat es funktioniert .. Herausgefunden, dass ich den Client-Stream schließen musste, bevor Server gestartet .. Danke für die Erinnerung an die Spülung obwohl ..: D –

+0

Er meint: es sieht aus wie dieser Code ist in 1 Programm. – ABuckau