Forum: Java:Kopplas den inte upp till servern!?

Forum huvudsida -> Programmering -> Java:Kopplas den inte upp till servern!?

Sidor: 1

Till botten

Veronica 12:55 - 9:e November 2007 | Post #1
Medlem
Inlägg: 5


Skicka PM
Hej

Jag har kämpat med en chat hur länge som helst nu känns det. Det är ett enkelt chattprogram!Jag har 2 koder jag har skrivit. Varav en som inte kopplar up sig till servern!
Vet inte riktigt vad jag ska göra nu så jag testar med detta....

Den är multitrådad (eller ska vara..). Men klassen SocketThread verkar inte funka! I main tar jag fram host och hostnamn och sen vill jag skicka de till SocketThread... men det funkar som sagt inte. Och det spelar ingen roll om jag försöker anroppa Threaden för antingen blir det ngen skillnad eller så funkar det inte beroende varifrån jag anroppar.

Här är programmet om någon känner att de har lust att kllura lite.... Grejen är den att det fortfarande inte går att chatta med någon heller. ,,ven om den kopplas!


Hälsningar
(programmet nedan har säkert kompileringsfel-det beror på } eller den andra tråden som borde vara lätt att ta bort.... men jag söker tips påp hur jag ska tacka socketthreaden....)

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;


/**
  • GUI till Chatklient
*/
public class Multichat extends JFrame implements ActionListener{

Socket s;
PrintWriter out;
JTextArea textLog;
JTextField sendTextField;
String argone;
Integer arg;
/**
  • Skapa ett grnssnitt
*/

Multichat(String argone, Integer arg){
    this.argone=argone;
    this.arg=arg;
    getContentPane().setLayout( new BorderLayout(5,5) );
    setBackground(Color.lightGray);
    
    // vre delen av fnstret, Norr
    JPanel northPanel = new JPanel();
    northPanel.setLayout(new BorderLayout());
    getContentPane().add(northPanel, BorderLayout.NORTH);
    
    
    // Mitten av fnstret, Center
    textLog = new JTextArea();
    JScrollPane textScrollPane = new JScrollPane(textLog);
    getContentPane().add(textScrollPane, BorderLayout.CENTER);
    
    // Nedre delen av fnstret, South
    JPanel southPanel = new JPanel();
    southPanel.setLayout(new BorderLayout());

    getContentPane().add(southPanel, BorderLayout.SOUTH);
    
    sendTextField = new JTextField();
    sendTextField.addActionListener(this);
    southPanel.add(sendTextField, BorderLayout.CENTER);
    
    sendTextField.requestFocus();
    setSize(400,250);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}


public void actionPerformed(ActionEvent e) {
     if ( e.getSource() == sendTextField) {
        textLog.append( sendTextField.getText() + " \n");    
        sendTextField.setText(" ");
     SocketThread st=new SocketThread(argone, arg);

     }
}

class SocketThread extends Thread {
    Integer arg;
    String argone;
    Socket socket = null;
    PrintWriter out = null;
    BufferedReader in = null;
    

    public SocketThread(String argone, Integer arg){
     start();    
     this.arg=arg;
     this.argone=argone;    
    }
    
     public void run(){
        try {
         socket = new Socket(argone,arg);
         out=new PrintWriter (socket.getOutputStream(), true);
         in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
         BufferedReader stdIn=new BufferedReader(new InputStreamReader(System.in));
         String userInput;
        
         while(( userInput=stdIn.readLine()) !=null){
            out.println (userInput);
            System.out.println("echo: "+ in.readLine());
    
    
         }
         out.close();
         in.close();
         stdIn.close();
         socket.close();
        
        } catch (UnknownHostException e) {
         System.err.println("Knner inte till host:" + argone);
         System.exit(1);
        
        } catch (IOException e) {
         System.err.println("Kan inte lsa-skriva frn: " + argone);
         System.exit(1);
        }
     }

/**
  • Trd som lyssnar p meddelanden frn servern och presenterar dem i textarean.
*/
class ResponseThread extends Thread{
String message;

/**
  • Lyssnar p meddelanden och skriver ut text
*/
public void run() {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
while (true) {
message = in.readLine();
textLog.append(message + "");

}
}
catch (IOException e) {
System.out.println("Fel: " + e);
}
}
}





public static void main (String[]args){
    
    Integer arg;
    String argone;
    String argtwo;
    String hostname;
    Integer port;    
    Socket socket = null;
    PrintWriter out = null;
    BufferedReader in = null;
    
    
    if (args.length == 2){
     argone = args[0];
     try {
        //arg=Integer.parseInt(args[1]);
        arg = Integer.valueOf(args[1]).intValue();
     }    
     catch (NumberFormatException e) {
        System.out.println(e);
     }
    }
    
    
    else {    
     if (args.length == 1){
        argone = args[0];
        arg = 2000;
     }
    
     else {
        argone="127.0.0.1";
        arg=2000;
     }
    
    
    Multichat m =new Multichat (argone, arg);
    m.setTitle("Chat klient, Server: "+argone+"Port: "+arg+".");     
    }
}
}





Slash 16:39 - 9:e November 2007 | Post #2
Medlem
Inlägg: 141


Skicka PM
Du får gå in med en debugger och kolla så allt verkar blir rätt, eller åtminstone i värsta fall skriva ut lite text på relevanta ställen för att försöka luska ut vad som händer. Det jag ser så här rakt av är att

start();
this.arg=arg;
this.argone=argone;


i SocketThread-konstruktorn kanske kan ge felaktiga resultat i vissa fall (beroende på hur trådarna schemaläggs). Kan vara rekommenderat att sätta medlemmsvariablerna innan du startar tråden.

Den andra är: När används ResponseThread, är det meningen att den inte ska användas någonstans?


-------------------------
Ingen sigantur!



Veronica 09:24 - 10:e November 2007 | Post #3
Medlem
Inlägg: 5


Skicka PM
Hej igen...
Jag debuggade (första gången så jag lärde mig nåt nytt) och jag måste göra om programmet en del... Trådarna nås inte. Jag får kämpa vidare...
Men tack! Jag kom vidare!




Sidor: 1

Forum huvudsida -> Programmering -> Java:Kopplas den inte upp till servern!?
Atom feed

Du får inte posta i den här tråden | Till toppen