Forum huvudsida -> Programmering -> Java:Kopplas den inte upp till servern!?
Sidor: 1
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.*; /**
public class Multichat extends JFrame implements ActionListener{ Socket s; PrintWriter out; JTextArea textLog; JTextField sendTextField; String argone; Integer arg; /**
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); } } /**
class ResponseThread extends Thread{ String message; /**
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!?
Du får inte posta i den här tråden | Till toppen
Datum
2024-04-29 16:45
Vecka: 18
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.