Java Polaczenie TCP Chat - Connection Reset

0

Witam, robie własnie chat łączać sie poprzez tcp. Moge wysylac wszystko z servera do clienta ale problemem jest fakt, ze co jakis czas wyrzuca mi błąd po stronie clienta :

java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(Unknown Source)
	at java.net.SocketInputStream.read(Unknown Source)
	at java.net.SocketInputStream.read(Unknown Source)
	at java.io.DataInputStream.readBoolean(Unknown Source)
	at GreetingClient.main(GreetingClient.java:22)

kod servera :

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class Wlasny_Server_Chat extends JPanel {


        static Wlasny_Server_Chat Panel;
        static String a="";
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public static void zrobGui() throws IOException
	{
		Panel = new Wlasny_Server_Chat();

		JFrame ramka = new JFrame("CHAT");
		JButton button = new JButton("wyslij");
		button.setPreferredSize(new Dimension(100,100));
		final JTextArea tf1 = new JTextArea();  
		JScrollPane scroll = new JScrollPane(tf1);
		scroll.setPreferredSize(new Dimension(100,100));
		Panel.setBackground(Color.green);
		Panel.add(scroll);
		ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		ramka.getContentPane().add(Panel);
		Panel.add(button);
		button.setBackground((new Color(200,155,200)));
		
		//ramka.setLayout(new FlowLayout());
		//ramka.setLayout(new BorderLayout());
		ramka.setLocationByPlatform(true);
		ramka.setVisible(true);
		ramka.setResizable(false);
		ramka.setLocation(0,0);
		ramka.setSize(406,428);
		button.addActionListener(new ActionListener(){
		    public void actionPerformed(ActionEvent e) {
		       a=tf1.getText();
		    }
		});

	}
	

	public static void main(String[] args) throws IOException {
		 
	
		EventQueue.invokeLater(new Runnable() {
			@Override
			public void run() {
				try {
					zrobGui();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
		while(true)
		{
		      ServerSocket serverSocket = new ServerSocket(6066);
		      Socket socket = serverSocket.accept();
		      OutputStream os = socket.getOutputStream();
		      DataOutputStream out =new DataOutputStream(os);
		      if(a.length()==0)
		      {
			      out.writeBoolean(false);		    	  
		      }
		      else
		      {
		    	  out.writeBoolean(true);
		    	  out.writeUTF(a);
		      }
		      a="";
		      out.flush();
		      out.close();
		      serverSocket.close();
			
		}
		  
   }
}
 

kod Clienta

import java.net.*;
import java.io.*;

public class GreetingClient
{
   public static void main(String [] args)
   {
      String serverName = "localhost";
      int port = 6066;
      while(true)
      {
    	  try
    	  {
    		 // System.out.println("Connecting to " + serverName+ " on port " + port);
    		  Socket client = new Socket(serverName, port);           // definiujemy sobie clienta
    		  InputStream inFromServer = client.getInputStream();    //  dostajemy wiadomosci z serwera
    		  OutputStream outToServer = client.getOutputStream();   // wysylamy do serwera

    		  // System.out.println("Just connected to "+ client.getRemoteSocketAddress());
    		  DataOutputStream out =new DataOutputStream(outToServer);
         	DataInputStream in =new DataInputStream(inFromServer);
         	if( in.readBoolean() == true)
         	{
             	System.out.println("Server says = " + in.readUTF());         		
         	}
         	else
         	{
         		
         		
         	}
         	out.flush();
         	client.close();
    	  }catch(IOException e)
    	  {
    		  e.printStackTrace();
    	  }
      }
   }
} 

Powyższy błąd wskazuje na :
if( in.readBoolean() == true)

Jakbyscie mogli mi doradzić gdzie mam błąd byłbym wdzięczny

2

Dawno temu coś dziubałem... Nie powinieneś mieć

ServerSocket serverSocket = new ServerSocket(6066);

w while(true).

1 użytkowników online, w tym zalogowanych: 0, gości: 1