Hallo.
Irgendwie kann ich keine Daten mehr übers Netz schicken und ich weiss nicht warum.
Ich will nicht gross labern sondern poste den Code.
die Zeile 114 ist die, die das try beendet und den Catch aufruft.
Warum es nicht funktioniert ist mir nicht klar, da der Socket weiter oben ordnungsgemäss gestartet wird.
Irgendwie kann ich keine Daten mehr übers Netz schicken und ich weiss nicht warum.
Ich will nicht gross labern sondern poste den Code.
die Zeile 114 ist die, die das try beendet und den Catch aufruft.
Warum es nicht funktioniert ist mir nicht klar, da der Socket weiter oben ordnungsgemäss gestartet wird.
Code:
package netzwerk;
import java.net.*;
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Client
{
InputStream in;
OutputStream out;
JTextField tf;
String nickname;
JFrame frame;
JTextField field;
JDialog dialog;
Socket server;
public Client( )
{
init();
openNicknameDialog();
createGUI();
setupConnection( "192.168.1.100", 2000 );
}
private void init()
{
in = null;
out = null;
tf = null;
nickname = "noName";
frame = null;
field = null;
dialog = null;
server = null;
}
private void setupConnection( String ip, int port )
{
try
{
server = new Socket( ip, port );
in = server.getInputStream();
out = server.getOutputStream();
}
catch( Exception e )
{
tf.setText( "Fehler beim herstellen der Verbindung zum Server." );
}
}
private void openNicknameDialog()
{
dialog = new JDialog( frame, true );
dialog.setLayout( new BorderLayout() );
JLabel label = new JLabel( "Nickname:" );
field = new JTextField();
JButton but = new JButton( "ok" );
but.addActionListener( new okListener() );
dialog.add( BorderLayout.WEST, label );
dialog.add( BorderLayout.CENTER, field );
dialog.add( BorderLayout.EAST, but );
dialog.setSize( 300, 80 );
dialog.setVisible( true );
}
private void createGUI( )
{
frame = new JFrame("Client");
frame.setLayout( new BorderLayout() );
tf = new JTextField();
JButton b = new JButton( "senden" );
b.setFocusable( false );
b.addActionListener( new ButtonListener() );
frame.add( BorderLayout.CENTER, tf );
frame.add( BorderLayout.EAST, b );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setSize( 300, 80 );
frame.setVisible( true );
}
class ButtonListener implements ActionListener
{
boolean fehler;
public void actionPerformed( ActionEvent e )
{
fehler = false;
sendMessage();
if( !fehler )
clearEingabe();
}
private void clearEingabe()
{
tf.setText( "" );
}
private void sendMessage( )
{
try
{
String s = nickname + ": " + tf.getText();
byte[] bytes = s.getBytes();
for( int i=0; i < bytes.length; i++ )
out.write( bytes[i] );
out.flush();
}
catch( Exception e )
{
tf.setText( "Die Nachricht konnte nicht gesendet werden." );
fehler = true;
}
}
}
class okListener implements ActionListener
{
public void actionPerformed( ActionEvent e )
{
nickname = field.getText();
dialog.setVisible( false );
}
}
}