Hallo,
ich versuch im Moment einen einfachen Chat zu implementieren.
Dummerweise bekomme ich da immer eine Exception wenn ich den Stream losschicke.
Dabei ist doch der Socket verbunden. Also der SocketServer accepts.
Komisch, ich habs auch schon mal als Thread versucht, da der Server eh später mehrere Verbindungen eingehen soll.
Zur Vereinfachung hab ich dann mal anstatt in run() den code in eine einfache void methode geschrieben.
Hoffe jemand kann mir helfen.
Gruss
Thomas
ich versuch im Moment einen einfachen Chat zu implementieren.
Code:
package web;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import java.util.*;
public class Chat extends JFrame{
JPanel paneln;
JPanel panelc;
JButton send;
JButton sendtext;
JTextField host;
JTextArea output;
JTextArea input;
URL url;
URLConnection urlcon;
BufferedReader buf;
ServerSocket serv;
Socket outclient;
InetAddress adress;
int port = 2006;
protected Vector connections;
Thread connect;
DataInputStream in;
PrintStream out;
public Chat() {
super("Chat 0.1");
Container c = getContentPane();
c.setLayout(new BorderLayout());
paneln = new JPanel();
paneln.setLayout(new FlowLayout());
panelc = new JPanel();
panelc.setLayout(new GridLayout(2,1));
send = new JButton("Connect");
sendtext = new JButton("Senden");
host = new JTextField(10);
output = new JTextArea(5,5);
output.setEditable(false);
output.setBackground(Color.black);
output.setForeground(Color.green);
input = new JTextArea(5,5);
paneln.add(host);
paneln.add(send);
panelc.add(output);
panelc.add(input);
c.add(paneln, BorderLayout.NORTH);
c.add(panelc, BorderLayout.CENTER);
c.add(sendtext, BorderLayout.SOUTH);
try{
serv = new ServerSocket(port);
output.append("ServerSocket erstellt...\nServer lauscht auf Port 2001...\n");
}
catch(IOException e){
output.append("Kann ServerSocket nicht erstellen\n");
}
send.addActionListener(new MeinActionLauscher());
sendtext.addActionListener(new MeinActionLauscher1());
}
class MeinActionLauscher implements ActionListener {
public void actionPerformed(ActionEvent e){
try{
/*
url = new URL(host.getText());
buf = new BufferedReader(new InputStreamReader(url.openStream()));
String s;
int i=1;
while((s=buf.readLine())!=null){
output.append(i+": "+s+"\n");
i++;
}
*/
adress = InetAddress.getByName(host.getText());
output.append("Verbindung aufbauen mit: "+host.getText()+"\n");
outclient = new Socket(adress, port);
output.append("Verbindung steht... h4ck th3 w0rld :-)\n");
}
catch(IOException e1){
output.append("Verbindung konnte nicht aufgebaut werden...\n");
}
}
}
class MeinActionLauscher1 implements ActionListener{
public void actionPerformed(ActionEvent e){
output.append("Ich: "+input.getText()+"\n");
out.println("Er: "+input.getText()+"\n");
input.setText("");
}
}
public void broadcast(String msg)
{
int i;
connection you;
for (i=0; i<connections.size(); i++)
{
you = (connection) connections.elementAt(i);
you.out.println(msg);
}
}
public void lauschen() {
String line;
try{
while(true){
Socket client = serv.accept();
output.append(client.toString()+"\n");
output.append("Socket angenommen\n");
if(client.isConnected())
output.append("Jupp");
//connection c = new connection(this, client);
//connections.addElement(c);
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintStream(client.getOutputStream());
line = in.readLine();
if(line!=null)
output.append(line+'\n' );
}
}
catch(IOException e){
output.append("Verbindung kann nicht angenommen werden! SCHEISSE\n");
}
}
public static void main(String[] args){
Chat chatlein = new Chat();
chatlein.setSize(300,400);
chatlein.setVisible(true);
chatlein.lauschen();
}
}
Dummerweise bekomme ich da immer eine Exception wenn ich den Stream losschicke.
Dabei ist doch der Socket verbunden. Also der SocketServer accepts.
Komisch, ich habs auch schon mal als Thread versucht, da der Server eh später mehrere Verbindungen eingehen soll.
Zur Vereinfachung hab ich dann mal anstatt in run() den code in eine einfache void methode geschrieben.
Hoffe jemand kann mir helfen.
Gruss
Thomas