Java Chatting program, sänder ingen message
Hej
Innan jag börjar min fråga, jag vill att säga ursäkta med språket eftersom jag är inte svensk man.
För min gymnasiearbete, jag ska göra ett chatting program.
Jag vet att min kod ses ut hemskt men jag är inte klart med kodningen. Jag ska försätta att hantera min kod.
Kod ses ut så här:
'
package Chat;
//Server
import java.awt.*;
import java.awt.event.*;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.*;
public class Chat_Server extends JFrame implements ActionListener{
JButton jb1 = new JButton("Invite");
JButton Name = new JButton("Name");
JButton Enter = new JButton("Enter");
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
static JTextArea textarea = new JTextArea(100,100);
JTextField textfield = new JTextField(35);
static ServerSocket SS;
static Socket S;
static DataInputStream DIS;
static DataOutputStream DOS;
public Chat_Server(){
jp1.setLayout(new FlowLayout());
jp1.add(jb1); jp1.add(Name);
jb1.addActionListener(this);
Name.addActionListener(this);
jp2.add(textarea);
jp3.setLayout(new FlowLayout());
jp3.add(textfield); jp3.add(Enter);
add(jp1, BorderLayout.NORTH);
add(jp2, BorderLayout.CENTER);
add(jp3, BorderLayout.SOUTH);
Enter.addActionListener(this);
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
String name;
if(e.getSource()==jb1)
Call();
if(e.getSource()==Name){
name = JOptionPane.showInputDialog("Type your name");
String Servername = name;
}
if(e.getSource()==Enter){
try{
String MessageOut= "";
MessageOut = textfield.getText();
DOS.writeUTF(MessageOut);
}catch( Exception ex){
System.out.println("ERROR!");
}
}
}
public void Call(){
Chat_Client CC = new Chat_Client();
}
public static void main (String[] args){
Chat_Server cs = new Chat_Server();
String MessageIn = "";
try{
SS = new ServerSocket(1000);
Socket S = SS.accept();
DIS = new DataInputStream(S.getInputStream());
DOS = new DataOutputStream(S.getOutputStream());
while (!MessageIn.equals("Stop the chat")){
MessageIn = DIS.readUTF();
textarea.setText(textarea.getText()+"\n"+MessageIn);
}
}
catch(Exception e){
System.out.println("ERROR!!");
}
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Chat_Client extends JFrame implements ActionListener{
JButton Name = new JButton("Namn");
JButton Enter = new JButton("Enter");
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
static JTextArea textarea = new JTextArea(100,100);
JTextField textfield = new JTextField(35);
static ServerSocket SS;
static Socket S;
static DataInputStream DIS;
static DataOutputStream DOS;
public Chat_Client(){
jp1.add(Name);
Name.addActionListener(this);
jp2.add(textarea);
jp3.setLayout(new FlowLayout());
jp3.add(textfield); jp3.add(Enter);
add(jp1, BorderLayout.NORTH);
add(jp2, BorderLayout.CENTER);
add(jp3, BorderLayout.SOUTH);
Enter.addActionListener(this);
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
String name;
if(e.getSource()==Name){
name = JOptionPane.showInputDialog("Type your name");
String Kundname = name;
}
if(e.getSource()==Enter){
try{
String MessageOut= "";
MessageOut = textfield.getText();
DOS.writeUTF(MessageOut);
}catch( Exception ex){
System.out.println("ERROR!");
}
}
}
public static void main (String[] args){
Chat_Client cc = new Chat_Client();
String MessageIn = "";
try{
S = new Socket("127.0.0.1",1000);
DIS = new DataInputStream(S.getInputStream());
DOS = new DataOutputStream(S.getOutputStream());
while (!MessageIn.equals("Stop the chat")){
MessageIn = DIS.readUTF();
textarea.setText(textarea.getText()+"\n"+MessageIn);
}
}
catch(Exception e){
System.out.println("ERROR!!");
}
}
}
Problem är när man trycker på Enter knappen på både Server och Client , programmet visar Error! i kommandofönstret. Kan ni ge någon tips vad måste jag tänka för att lösa ?