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