/* | |||||
* To change this license header, choose License Headers in Project Properties. | |||||
* To change this template file, choose Tools | Templates | |||||
* and open the template in the editor. | |||||
*/ | |||||
package chatprogramm; | |||||
import java.io.BufferedReader; | |||||
import java.io.IOException; | |||||
import java.io.InputStream; | |||||
import java.io.InputStreamReader; | |||||
import java.io.OutputStream; | |||||
import java.io.OutputStreamWriter; | |||||
import java.io.PrintWriter; | |||||
import java.net.Socket; | |||||
import java.util.logging.Logger; | |||||
/** | |||||
* Builder Class | |||||
* @author le | |||||
*/ | |||||
public class Client | |||||
{ | |||||
private static final Logger lg = Logger.getLogger("netz"); | |||||
private static final int PORT = 35000; | |||||
private static final String IP_ADRESSE = "127.0.0.1"; | |||||
public Client() throws IOException | |||||
{ | |||||
lg.info("Client: verbinde ..."); | |||||
Socket s = new Socket(IP_ADRESSE, PORT); // Achtung: blockiert! | |||||
lg.info("Client: Verbindung hergestellt"); | |||||
InputStream iStream = s.getInputStream(); | |||||
OutputStream oStream = s.getOutputStream(); | |||||
InputStreamReader isr = new InputStreamReader(iStream, "UTF-8"); | |||||
OutputStreamWriter osr = new OutputStreamWriter(oStream, "UTF-8"); | |||||
BufferedReader in = new BufferedReader(isr); | |||||
//BufferedWriter out = new BufferedWriter(osr); | |||||
PrintWriter out = new PrintWriter(osr); | |||||
lg.info("Client: Stream initialisiert"); | |||||
out.println("Hallo Du Server Du - ich bin der client"); | |||||
out.flush(); // wirklich absenden!! | |||||
lg.info("Client: Nachricht versendet"); | |||||
String quittung = in.readLine(); // Achtung blockiert | |||||
lg.info("Client: Quittung empfangen"); | |||||
System.out.println("Client: Quittung EMPFANGEN - " + quittung); | |||||
out.close(); | |||||
in.close(); | |||||
} | |||||
/** | |||||
* @param args the command line arguments | |||||
*/ | |||||
public static void main(String[] args) | |||||
{ | |||||
try | |||||
{ | |||||
new Client(); | |||||
} | |||||
catch (IOException ex) | |||||
{ | |||||
lg.severe(ex.toString()); | |||||
} | |||||
} | |||||
} |
/* | |||||
* To change this license header, choose License Headers in Project Properties. | |||||
* To change this template file, choose Tools | Templates | |||||
* and open the template in the editor. | |||||
*/ | |||||
package chatprogramm; | |||||
import java.io.BufferedReader; | |||||
import java.io.IOException; | |||||
import java.io.InputStream; | |||||
import java.io.InputStreamReader; | |||||
import java.io.OutputStream; | |||||
import java.io.OutputStreamWriter; | |||||
import java.io.PrintWriter; | |||||
import java.net.ServerSocket; | |||||
import java.net.Socket; | |||||
import java.util.logging.Logger; | |||||
/** | |||||
* Builder Class | |||||
* @author le | |||||
*/ | |||||
public class Server | |||||
{ | |||||
private static final Logger lg = Logger.getLogger("netz"); | |||||
private static final int PORT = 35000; | |||||
public Server() throws IOException | |||||
{ | |||||
ServerSocket sSocket = new ServerSocket(PORT); | |||||
lg.info("Server: Warte auf Verbindung ..."); | |||||
Socket s = sSocket.accept(); // Achtung: blockiert! | |||||
lg.info("Server: Verbindung akzeptiert"); | |||||
InputStream iStream = s.getInputStream(); | |||||
OutputStream oStream = s.getOutputStream(); | |||||
InputStreamReader isr = new InputStreamReader(iStream, "UTF-8"); | |||||
OutputStreamWriter osr = new OutputStreamWriter(oStream, "UTF-8"); | |||||
BufferedReader in = new BufferedReader(isr); | |||||
//BufferedWriter out = new BufferedWriter(osr); | |||||
PrintWriter out = new PrintWriter(osr); | |||||
lg.info("Server: Stream initialisiert"); | |||||
lg.info("Server: warte auf Nachricht ..."); | |||||
String nachricht = in.readLine(); // Achtung blockiert | |||||
lg.info("Server: Nachricht empfangen"); | |||||
System.out.println("Server: NACHRICHT EMPFANGEN - " + nachricht); | |||||
out.println("Server -> ich habe die Nachricht erhalten"); | |||||
lg.info("Server: Quittung versendet"); | |||||
out.flush(); // wirklich absenden!! | |||||
out.close(); | |||||
in.close(); | |||||
} | |||||
/** | |||||
* @param args the command line arguments | |||||
*/ | |||||
public static void main(String[] args) | |||||
{ | |||||
try | |||||
{ | |||||
new Server(); | |||||
} | |||||
catch (IOException ex) | |||||
{ | |||||
lg.severe(ex.toString()); | |||||
} | |||||
} | |||||
} |
package chatprogramm; | package chatprogramm; | ||||
import chatprogramm.controller.ConnectController; | |||||
import chatprogramm.controller.ReceiveAdapterController; | |||||
import chatprogramm.controller.SendController; | |||||
import chatprogramm.model.Transmitter; | |||||
import chatprogramm.view.ChatView; | |||||
/** | /** | ||||
* Builder Class | * Builder Class | ||||
* @author le | * @author le | ||||
{ | { | ||||
public Start() | public Start() | ||||
{ | { | ||||
ChatView view = new ChatView(); | |||||
Transmitter model = new Transmitter(); | |||||
ConnectController conCon = new ConnectController(view, model); | |||||
ReceiveAdapterController reiAdapCon = new ReceiveAdapterController(view, model); | |||||
SendController sendCon = new SendController(view, model); | |||||
view.setVisible(true); | |||||
} | } | ||||
package chatprogramm.controller; | package chatprogramm.controller; | ||||
import chatprogramm.logger.OhmLogger; | |||||
import chatprogramm.model.Transmitter; | import chatprogramm.model.Transmitter; | ||||
import chatprogramm.view.ChatView; | import chatprogramm.view.ChatView; | ||||
import java.io.IOException; | |||||
import java.util.logging.Level; | |||||
import java.util.logging.Logger; | |||||
import javax.swing.JOptionPane; | |||||
/** | /** | ||||
* | * | ||||
{ | { | ||||
private ChatView view; | private ChatView view; | ||||
private Transmitter model; | private Transmitter model; | ||||
private static final Logger logger = OhmLogger.getLogger(); | |||||
private String ip = null; | |||||
private int port = 0; | |||||
public ConnectController(ChatView view, Transmitter model) | public ConnectController(ChatView view, Transmitter model) | ||||
{ | { | ||||
this.view = view; | this.view = view; | ||||
this.model = model; | this.model = model; | ||||
chooseConnection(); | |||||
} | |||||
void chooseConnection() | |||||
{ | |||||
Object[] options = {"Client", "Server"}; | |||||
int choice = JOptionPane.showOptionDialog(view, "Wähle deine Verbindungsart:", "Client oder Server", 0, 1, null, options, null); | |||||
if(choice == 1) | |||||
{ | |||||
logger.info("Server"); | |||||
String port = JOptionPane.showInputDialog(view, "PORT eingeben"); | |||||
logger.info("Port für Server ist: localhost:" + port); | |||||
startServer(); | |||||
} | |||||
else | |||||
{ | |||||
logger.info("Client"); | |||||
port = Integer.parseInt(JOptionPane.showInputDialog(view, "PORT eingeben")); | |||||
ip = JOptionPane.showInputDialog(view, "IP vom Server bitte"); | |||||
logger.info("Client IP Adresse und Port ist: " + ip + ":" + port); | |||||
startClient(); | |||||
} | |||||
} | |||||
public void startServer() | |||||
{ | |||||
try | |||||
{ | |||||
model.createServer(port); | |||||
} | |||||
catch (IOException ex) | |||||
{ | |||||
Logger.getLogger(ConnectController.class.getName()).log(Level.SEVERE, null, ex); | |||||
} | |||||
} | |||||
public void startClient() | |||||
{ | |||||
try | |||||
{ | |||||
model.createClient(port, ip); | |||||
} | |||||
catch (IOException ex) | |||||
{ | |||||
Logger.getLogger(ConnectController.class.getName()).log(Level.SEVERE, null, ex); | |||||
} | |||||
} | } | ||||
} | } |
public class Client | public class Client | ||||
{ | { | ||||
private static final Logger lg = OhmLogger.getLogger(); | private static final Logger lg = OhmLogger.getLogger(); | ||||
private static final int PORT = 35000; | |||||
private static final String IP_ADRESSE = "127.0.0.1"; | |||||
private static int PORT = 35000; | |||||
private static String IP_ADRESSE = "127.0.0.1"; | |||||
public Client() throws IOException | |||||
public Client(int port, String ip) throws IOException | |||||
{ | { | ||||
if(port != 0) {this.PORT = port;}; | |||||
if(ip != null | ip != "") {this.IP_ADRESSE = ip;}; | |||||
lg.info("Client: verbinde ..."); | lg.info("Client: verbinde ..."); | ||||
Socket s = new Socket(IP_ADRESSE, PORT); // Achtung: blockiert! | Socket s = new Socket(IP_ADRESSE, PORT); // Achtung: blockiert! | ||||
lg.info("Client: Verbindung hergestellt"); | lg.info("Client: Verbindung hergestellt"); | ||||
in.close(); | in.close(); | ||||
} | } | ||||
/** | |||||
* @param args the command line arguments | |||||
*/ | |||||
public static void main(String[] args) | |||||
{ | |||||
try | |||||
{ | |||||
new Client(); | |||||
} | |||||
catch (IOException ex) | |||||
{ | |||||
lg.severe(ex.toString()); | |||||
} | |||||
} | |||||
} | } |
public class Server | public class Server | ||||
{ | { | ||||
private static final Logger lg = OhmLogger.getLogger(); | private static final Logger lg = OhmLogger.getLogger(); | ||||
private static final int PORT = 35000; | |||||
private static int PORT = 35000; | |||||
public Server() throws IOException | |||||
public Server(int port) throws IOException | |||||
{ | { | ||||
if(port != 0) | |||||
{ | |||||
this.PORT = port; | |||||
} | |||||
ServerSocket sSocket = new ServerSocket(PORT); | ServerSocket sSocket = new ServerSocket(PORT); | ||||
lg.info("Server: Warte auf Verbindung ..."); | lg.info("Server: Warte auf Verbindung ..."); | ||||
Socket s = sSocket.accept(); // Achtung: blockiert! | Socket s = sSocket.accept(); // Achtung: blockiert! | ||||
in.close(); | in.close(); | ||||
} | } | ||||
/** | |||||
* @param args the command line arguments | |||||
*/ | |||||
public static void main(String[] args) | |||||
{ | |||||
try | |||||
{ | |||||
new Server(); | |||||
} | |||||
catch (IOException ex) | |||||
{ | |||||
lg.severe(ex.toString()); | |||||
} | |||||
} | |||||
} | } |
package chatprogramm.model; | package chatprogramm.model; | ||||
import java.io.IOException; | |||||
/** | /** | ||||
* | * | ||||
* @author Gerhard | * @author Gerhard | ||||
*/ | */ | ||||
public class Transmitter | public class Transmitter | ||||
{ | { | ||||
Server server; | |||||
Client client; | |||||
public Transmitter() | public Transmitter() | ||||
{ | { | ||||
} | } | ||||
public void createServer(int port) throws IOException | |||||
{ | |||||
server = new Server(port); | |||||
} | |||||
public void createClient(int port, String ip) throws IOException | |||||
{ | |||||
client = new Client(port, ip); | |||||
} | |||||
} | } |
<Form version="1.9" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> | <Form version="1.9" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> | ||||
<NonVisualComponents> | <NonVisualComponents> | ||||
<Container class="javax.swing.JDialog" name="jDialogServerClient"> | |||||
<Layout> | |||||
<DimensionLayout dim="0"> | |||||
<Group type="103" groupAlignment="0" attributes="0"> | |||||
<EmptySpace min="0" pref="400" max="32767" attributes="0"/> | |||||
</Group> | |||||
</DimensionLayout> | |||||
<DimensionLayout dim="1"> | |||||
<Group type="103" groupAlignment="0" attributes="0"> | |||||
<EmptySpace min="0" pref="300" max="32767" attributes="0"/> | |||||
</Group> | |||||
</DimensionLayout> | |||||
</Layout> | |||||
</Container> | |||||
<Menu class="javax.swing.JMenuBar" name="jMenuBar1"> | <Menu class="javax.swing.JMenuBar" name="jMenuBar1"> | ||||
<SubComponents> | <SubComponents> | ||||
<Menu class="javax.swing.JMenu" name="jMenu2"> | <Menu class="javax.swing.JMenu" name="jMenu2"> | ||||
<SyntheticProperties> | <SyntheticProperties> | ||||
<SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar1"/> | <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar1"/> | ||||
<SyntheticProperty name="formSizePolicy" type="int" value="1"/> | <SyntheticProperty name="formSizePolicy" type="int" value="1"/> | ||||
<SyntheticProperty name="generateCenter" type="boolean" value="false"/> | |||||
<SyntheticProperty name="generateCenter" type="boolean" value="true"/> | |||||
</SyntheticProperties> | </SyntheticProperties> | ||||
<AuxValues> | <AuxValues> | ||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> | <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> | ||||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> | <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> | ||||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> | <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> | ||||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> | <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> | ||||
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/> | |||||
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-112,0,0,2,88"/> | |||||
</AuxValues> | </AuxValues> | ||||
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> | <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> | ||||
<Property name="text" type="java.lang.String" value="clear"/> | <Property name="text" type="java.lang.String" value="clear"/> | ||||
</Properties> | </Properties> | ||||
</Component> | </Component> | ||||
<Component class="javax.swing.JButton" name="btnServer"> | |||||
<Properties> | |||||
<Property name="text" type="java.lang.String" value="jButton1"/> | |||||
</Properties> | |||||
</Component> | |||||
<Component class="javax.swing.JButton" name="jButton1"> | |||||
<Properties> | |||||
<Property name="text" type="java.lang.String" value="jButton1"/> | |||||
</Properties> | |||||
</Component> | |||||
</SubComponents> | </SubComponents> | ||||
</Container> | </Container> | ||||
<Container class="javax.swing.JLayeredPane" name="chatContent"> | <Container class="javax.swing.JLayeredPane" name="chatContent"> |
return btnSend; | return btnSend; | ||||
} | } | ||||
/** | |||||
* @return the jDialogServerClient | |||||
*/ | |||||
public javax.swing.JDialog getjDialogServerClient() | |||||
{ | |||||
return jDialogServerClient; | |||||
} | |||||
/** | /** | ||||
* @return the taEmpfangen | * @return the taEmpfangen | ||||
*/ | */ | ||||
private void initComponents() | private void initComponents() | ||||
{ | { | ||||
jDialogServerClient = new javax.swing.JDialog(); | |||||
chatControll = new javax.swing.JLayeredPane(); | chatControll = new javax.swing.JLayeredPane(); | ||||
btnSend = new javax.swing.JButton(); | btnSend = new javax.swing.JButton(); | ||||
btnClear = new javax.swing.JButton(); | btnClear = new javax.swing.JButton(); | ||||
btnServer = new javax.swing.JButton(); | |||||
jButton1 = new javax.swing.JButton(); | |||||
chatContent = new javax.swing.JLayeredPane(); | chatContent = new javax.swing.JLayeredPane(); | ||||
jScrollPane1 = new javax.swing.JScrollPane(); | jScrollPane1 = new javax.swing.JScrollPane(); | ||||
taEmpfangen = new javax.swing.JTextArea(); | taEmpfangen = new javax.swing.JTextArea(); | ||||
jMenu2 = new javax.swing.JMenu(); | jMenu2 = new javax.swing.JMenu(); | ||||
jMenu3 = new javax.swing.JMenu(); | jMenu3 = new javax.swing.JMenu(); | ||||
javax.swing.GroupLayout jDialogServerClientLayout = new javax.swing.GroupLayout(jDialogServerClient.getContentPane()); | |||||
jDialogServerClient.getContentPane().setLayout(jDialogServerClientLayout); | |||||
jDialogServerClientLayout.setHorizontalGroup( | |||||
jDialogServerClientLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||||
.addGap(0, 400, Short.MAX_VALUE) | |||||
); | |||||
jDialogServerClientLayout.setVerticalGroup( | |||||
jDialogServerClientLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |||||
.addGap(0, 300, Short.MAX_VALUE) | |||||
); | |||||
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); | setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); | ||||
chatControll.setLayout(new java.awt.FlowLayout()); | chatControll.setLayout(new java.awt.FlowLayout()); | ||||
btnClear.setText("clear"); | btnClear.setText("clear"); | ||||
chatControll.add(btnClear); | chatControll.add(btnClear); | ||||
btnServer.setText("jButton1"); | |||||
chatControll.add(btnServer); | |||||
jButton1.setText("jButton1"); | |||||
chatControll.add(jButton1); | |||||
getContentPane().add(chatControll, java.awt.BorderLayout.PAGE_END); | getContentPane().add(chatControll, java.awt.BorderLayout.PAGE_END); | ||||
chatContent.setLayout(new javax.swing.BoxLayout(chatContent, javax.swing.BoxLayout.PAGE_AXIS)); | chatContent.setLayout(new javax.swing.BoxLayout(chatContent, javax.swing.BoxLayout.PAGE_AXIS)); | ||||
setJMenuBar(jMenuBar1); | setJMenuBar(jMenuBar1); | ||||
pack(); | pack(); | ||||
setLocationRelativeTo(null); | |||||
}// </editor-fold>//GEN-END:initComponents | }// </editor-fold>//GEN-END:initComponents | ||||
/** | /** | ||||
// Variables declaration - do not modify//GEN-BEGIN:variables | // Variables declaration - do not modify//GEN-BEGIN:variables | ||||
private javax.swing.JButton btnClear; | private javax.swing.JButton btnClear; | ||||
private javax.swing.JButton btnSend; | private javax.swing.JButton btnSend; | ||||
private javax.swing.JButton btnServer; | |||||
private javax.swing.JLayeredPane chatContent; | private javax.swing.JLayeredPane chatContent; | ||||
private javax.swing.JLayeredPane chatControll; | private javax.swing.JLayeredPane chatControll; | ||||
private javax.swing.JDialog jDialogServerClient; | |||||
private javax.swing.JButton jButton1; | |||||
private javax.swing.JMenu jMenu2; | private javax.swing.JMenu jMenu2; | ||||
private javax.swing.JMenu jMenu3; | private javax.swing.JMenu jMenu3; | ||||
private javax.swing.JMenuBar jMenuBar1; | private javax.swing.JMenuBar jMenuBar1; |