Kleiner erster p2p-Chat Problem

lufon

Mitglied
Guten Abend

ich habe einen kleinen p2p Chat programmiert.
Ich hatte als Vorbild ein anderes Programm, das funktioniert auch perfekt.

Allerding funktioniert mein chat nicht.keine exception etc. die msg kommt beim anderen rechner nicht an.

der aufbau ist simpel, 2 threads fürs versenden eines strings und der andere fürs empfangen.
dann noch eine klasse für die gui ,die auch alles verknüpft.und noch ne weitere, die die eigene IP in einem separatem fenster anzeigt.

ClientThread :

Java:
package javaapplication11;
import java.io.*;
import java.util.*;
import java.net.*;
import java.text.*;
public class ClientThread extends Thread  {
public static String ip , name ,msg;   
public P2P_Main main = new P2P_Main();

public ClientThread(String ip,String name,String msg){
   this.ip = ip;
   this.name = name;
   this.msg = msg;
}    
    
public void run() {
   
    String uhrzeit = DateFormat.getTimeInstance(DateFormat.MEDIUM).format(new Date());
    
    try {
        Socket s = new Socket(ip,6790);
        BufferedWriter send = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        send.write("<"+uhrzeit+">  "+name+":  "+msg+"\n"); 
        send.flush();
        s.close();
        
        
}catch (Exception e){main.jTextArea1.setText("clienterror");} 
   }

}

dann der ServerThread :

Java:
package javaapplication11;
import java.net.*;
import java.io.*;

public class ServerThread extends Thread{
    public String k = null;
public ServerSocket servsocket = new ServerSocket(6790);
public P2P_Main main = new P2P_Main();
public ServerThread() throws Exception{
    
    }
    
    @Override
    public void run(){
        while (true){
            try{
            Socket sock = servsocket.accept();
            BufferedReader buffread = new BufferedReader(new InputStreamReader(sock.getInputStream()));
            k = buffread.readLine();
            buffread.close();
            
              String before = main.jTextArea1.getText();
              main.jTextArea1.setText(before + k);  
            
            }catch(Exception e){main.jTextArea1.setText("errorserv"+"\n");}  
        } 
    }  
}

der HauptThread :
Java:
package javaapplication11;

import java.text.DateFormat;
import javax.swing.JList;
import javax.swing.ListModel;
import java.util.ArrayList;
import java.util.Date;


public class P2P_Main extends javax.swing.JFrame {
    public String[] model;
    public int allindex;
    public ArrayList<String> arrip = new ArrayList<String>();
    public static String ipstr;
    public static String name2;
    public static String msg2;

    public P2P_Main() {
    initComponents();
    
    }
//die GUI,nicht beachten
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jTextField2 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        jScrollPane3 = new javax.swing.JScrollPane();
        jList2 = new javax.swing.JList();
        jLabel1 = new javax.swing.JLabel();
        jButton4 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("Send");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jScrollPane2.setViewportView(jTextArea1);

        jButton2.setText("Add");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jButton3.setText("Delete");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jScrollPane3.setViewportView(jList2);

        jLabel1.setText("IP");

        jButton4.setText("Meine IP");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(jTextField1)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 452, Short.MAX_VALUE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                                .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE))
                                            .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                    .addGroup(layout.createSequentialGroup()
                                        .addGap(40, 40, 40)
                                        .addComponent(jLabel1))))
                            .addComponent(jTextField3))
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jButton4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(6, 6, 6)
                                .addComponent(jLabel1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jButton2)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jButton3)
                                .addGap(0, 0, Short.MAX_VALUE))
                            .addComponent(jScrollPane3))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 184, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButton1)
                    .addComponent(jButton4))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>  

//gui-code Fertig                      

//Jlist Optionen (Jbutton2 + 3)
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    
    int sel = jList2.getSelectedIndex();
    if ((jList2.getSelectedIndex()) == -1){
    
    }else{
    arrip.remove(sel);
    
    allindex = arrip.size();
    
    String[] notperm = new String[allindex];
    for (int i = 0; i<allindex; i++){
        notperm[i] = arrip.get(i);
    }
    JList s = new JList(notperm);
    ListModel list = s.getModel();
    jList2.setModel(list);
    }
    
    }
//----------------------                                        
//jList option

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        if (arrip.contains(jTextField2.getText())){
        
    }else {
    arrip.add(jTextField2.getText());
    allindex = arrip.size();
    
    String[] notperm = new String[allindex];
    
    for (int i = 0; i<allindex; i++){
        notperm[i] = arrip.get(i);
    }
    JList tlist = new JList(notperm);
    ListModel list = tlist.getModel();
    jList2.setModel(list);
    }
    } 
//-------------------------------------------
//clientthread starten                                       

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        if (jList2.getSelectedIndex() != -1){
            if(!jTextField1.getText().equals("")){
        int selip = jList2.getSelectedIndex();
        ipstr = arrip.get(selip);
        name2 = jTextField3.getText();
        msg2 = jTextField1.getText();
        ClientThread ct = new ClientThread(ipstr,name2,msg2);
        ct.start();
        String uhrzeit = DateFormat.getTimeInstance(DateFormat.MEDIUM).format(new Date());
        String before2 = jTextArea1.getText();
        jTextArea1.setText(before2 + ("<"+uhrzeit+">  "+name2+":  "+msg2+"\n"));
        jTextField1.setText("");
        }
        }
    }                                        

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        MyIP d = new MyIP();
        d.setVisible(true);
    }                                        

    public static void main(String args[]) {
   //look and feel     
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(P2P_Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(P2P_Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(P2P_Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(P2P_Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
//look and feel hier fertig
        //</editor-fold>

        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new P2P_Main().setVisible(true);
                
                //serverthread starten
                try{
                ServerThread servthread = new ServerThread();
                servthread.start();
                }catch (Exception e){}
            }
        });
    }
  
    
    
    
    
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JList jList2;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    public javax.swing.JTextArea jTextArea1;
    public javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    // End of variables declaration                   
}

habt ihr vll. nen denkanstoss ? :)

Gruss

ps : die FAQ hab ich schon gelesen.
 

tagedieb

Top Contributor
Die P2P_Main Referenz im ServerThread is falsch!

Du darfst hier keine neue Instanz erstellen, sondern musst die Instanz aus der main() Methode übergeben.

Gruss
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
A jar File kleiner bekommen Java Basics - Anfänger-Themen 3
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
P String größer kleiner gleich vergleichen Java Basics - Anfänger-Themen 6
Q Variablen If Anweisung, kleiner fehler Java Basics - Anfänger-Themen 8
F Kleiner Formatierungsfehler Java Basics - Anfänger-Themen 3
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
S GUI kann im WindowBuilder nicht mehr (größer kleiner ziehen) Java Basics - Anfänger-Themen 2
D kleiner Taschenrechner mit switch fehlerhaft Java Basics - Anfänger-Themen 1
H Erste Schritte Ergebniss soll kleiner als 1000 sein Java Basics - Anfänger-Themen 4
DStrohma Operatoren Kleiner-Zeichen in Größer-Zeichen ändern wenn boolen true? Java Basics - Anfänger-Themen 6
M Kleiner unauffindbarer Fehler im Programm Java Basics - Anfänger-Themen 6
E Erste Schritte Array soll kleiner werdenden String erstellen Java Basics - Anfänger-Themen 5
J Vererbung Kleiner Fehler, weiß aber nicht warum und wo Java Basics - Anfänger-Themen 9
R Inhalt vom String größer oder kleiner als Java Basics - Anfänger-Themen 16
J kleiner Fehler im FAQ Parser für mathematische Formeln Java Basics - Anfänger-Themen 5
F Objekte vergleichen kleiner/größer? Java Basics - Anfänger-Themen 4
K Kleiner Fehler bei Methoden Implementierung Java Basics - Anfänger-Themen 6
R Primzahl kleiner 3 Java Basics - Anfänger-Themen 2
O Ist diese Zahl größer oder kleiner 0? Java Basics - Anfänger-Themen 6
M Kleiner Fehler im Array... Java Basics - Anfänger-Themen 2
E BubbleSort kleiner Fehler? Java Basics - Anfänger-Themen 14
T kleiner fehler mit der "Zählvariable" Java Basics - Anfänger-Themen 6
S Kleiner Palindromtest Java Basics - Anfänger-Themen 4
C Größer - Kleiner - Zeichen in Strings Java Basics - Anfänger-Themen 3
M Kleiner Vokabeltrainier Java Basics - Anfänger-Themen 45
V Kleiner Wecker mit Gui (Brauche Tipps) Java Basics - Anfänger-Themen 5
A JButton wird kleiner mit Border Java Basics - Anfänger-Themen 3
A Kleiner Fehler Java Basics - Anfänger-Themen 4
G Kleiner Denkfehler Java Basics - Anfänger-Themen 23
G Kleiner Währungsrechner - Probleme ! Java Basics - Anfänger-Themen 16
H Fenster größer kleiner machen(Inhalt soll mitziehen) Java Basics - Anfänger-Themen 4
F Kleiner Fehler, den ich aber leider nicht finde. Java Basics - Anfänger-Themen 4
G gerade zahlen größer und kleiner null Java Basics - Anfänger-Themen 6
Spencer Reid erster Kontakt mit Datenbanken Java Basics - Anfänger-Themen 5
W Erste Schritte Erster Buchstabe groß bzw. klein???? Java Basics - Anfänger-Themen 2
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
F problem mit erster methode. Java Basics - Anfänger-Themen 6
C Klassen StackOverflow bei erster Nutzung von Klassen/Konstruktoren Java Basics - Anfänger-Themen 9
T Problem mit erster Kalenderwoche Java Basics - Anfänger-Themen 27
F Erste Schritte String von anderer Klasse auf TextArea von erster Klasse Java Basics - Anfänger-Themen 12
M Erster JAR Start überprüfen Java Basics - Anfänger-Themen 6
K Erster Versuch ein Hello World Projekt zu schreiben Java Basics - Anfänger-Themen 11
V Mein erster Konstruktor Java Basics - Anfänger-Themen 3
R Hilfe bei erster Grafik Java Basics - Anfänger-Themen 2
F Erster Tag mit Java Editor Java Basics - Anfänger-Themen 32
I Datenbank - nach erster Verbindung keine Verbindung mehr Java Basics - Anfänger-Themen 3
V Ignorieter erster Mainaufruf Java Basics - Anfänger-Themen 5
M Erster HashMap-test Java Basics - Anfänger-Themen 5
Developer_X Mein erster Internet Explorer Java Basics - Anfänger-Themen 14
N Erster Gehversuch in JAVA [ Brauche Meinungen ] Java Basics - Anfänger-Themen 2
G Erster Buchstabe groß bzw. klein? Java Basics - Anfänger-Themen 4
W ich und mein erster Veresuch hilfe Java Basics - Anfänger-Themen 23
S Erster Versuch: Passwort erstellen Java Basics - Anfänger-Themen 3
Gama Problem mit erster Applikation Java Basics - Anfänger-Themen 25
ChackZz Java-Rätsel: Mein erster Versuch Java Basics - Anfänger-Themen 19
H Streams etc. erster Versuch Zeilen aus einer Datei zu lesen Java Basics - Anfänger-Themen 6
G Mein erster Thread funktioniert nicht. Java Basics - Anfänger-Themen 3
K Erster Buchstabe groß Java Basics - Anfänger-Themen 7
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
D Verbesserungsvorschläge zur Struktur einer Client Server Desktop Chat App Java Basics - Anfänger-Themen 24
D Unerwartetes Verhalten bei Client Server Chat App Java Basics - Anfänger-Themen 12
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
W Hilfe beim Chat Programm Java Basics - Anfänger-Themen 14
M Chat Programm in Java Java Basics - Anfänger-Themen 1
A Schimpfwortfilter im Chat-Programm Java Basics - Anfänger-Themen 2
T Chat ingame Java Basics - Anfänger-Themen 3
R Brauche Hilfe beim fertigstellen eines Chat programms Java Basics - Anfänger-Themen 8
O euer chat hier Java Basics - Anfänger-Themen 1
O Ein einfacher Chatbot (simuliert chat) Java Basics - Anfänger-Themen 7
R Problem mit Java-Chat Java Basics - Anfänger-Themen 2
L Chat server Java Basics - Anfänger-Themen 4
D Wie den HTML-Teil des Chat Tutorials aus dem FAQ-Bereich starten? Java Basics - Anfänger-Themen 5
1 Chat im Browser Java Basics - Anfänger-Themen 16
G Chat-Nachrichtenübermittlung ? Java Basics - Anfänger-Themen 2
S Frage Chat programm bauen Java Basics - Anfänger-Themen 5
K Fertiger Chat Java Basics - Anfänger-Themen 4
V Java Chat Programm Problem mit IP Addresse Java Basics - Anfänger-Themen 7
A java chat vor DDOs schützen Java Basics - Anfänger-Themen 18
L Eine Art Chat Java Basics - Anfänger-Themen 28
M NumberFormatException Chat WordPress Java Basics - Anfänger-Themen 13
xDarkSunx Java Chat Hilfe Java Basics - Anfänger-Themen 9
Y chat programm im internet realisieren Java Basics - Anfänger-Themen 5
? Chat-Source Java Basics - Anfänger-Themen 17
U2nt Mein Chat Java Basics - Anfänger-Themen 10
E Chat Fehler Applet Java Basics - Anfänger-Themen 8
C Java Chat Tutorials Java Basics - Anfänger-Themen 1
K Bestehenden Chat modifizieren (noch ein Anfänger!) Java Basics - Anfänger-Themen 7
S Chat-Server Java Basics - Anfänger-Themen 6
M irc-chat logging Java Basics - Anfänger-Themen 14
B ICR Chat - Serveranbindung Java Basics - Anfänger-Themen 2
A Im Chat eigenen Beitrag in Farbe zeigen Java Basics - Anfänger-Themen 8
K Client-Liste im Chat Java Basics - Anfänger-Themen 2
Séby777 Chat für Schulklasse Java Basics - Anfänger-Themen 2
I Liste in Java (Chat-Frage) Java Basics - Anfänger-Themen 3
A Möchte Java - Chat in meine Homepage einbinden. Java Basics - Anfänger-Themen 4
J Java-Chat geht nicht | Brauche dringent hilfe! Java Basics - Anfänger-Themen 3
S Java-Chat und Smilies Java Basics - Anfänger-Themen 8
A Java Chat Bauen !?!? Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben