<?xml version="1.0" encoding="UTF-8"?> | |||||
<!-- You may freely edit this file. See commented blocks below for --> | |||||
<!-- some examples of how to customize the build. --> | |||||
<!-- (If you delete it and reopen the project it will be recreated.) --> | |||||
<!-- By default, only the Clean and Build commands use this build script. --> | |||||
<!-- Commands such as Run, Debug, and Test only use this build script if --> | |||||
<!-- the Compile on Save feature is turned off for the project. --> | |||||
<!-- You can turn off the Compile on Save (or Deploy on Save) setting --> | |||||
<!-- in the project's Project Properties dialog box.--> | |||||
<project name="Aufgabe10_ChatProgramm" default="default" basedir="."> | |||||
<description>Builds, tests, and runs the project Aufgabe10_ChatProgramm.</description> | |||||
<import file="nbproject/build-impl.xml"/> | |||||
<!-- | |||||
There exist several targets which are by default empty and which can be | |||||
used for execution of your tasks. These targets are usually executed | |||||
before and after some main targets. They are: | |||||
-pre-init: called before initialization of project properties | |||||
-post-init: called after initialization of project properties | |||||
-pre-compile: called before javac compilation | |||||
-post-compile: called after javac compilation | |||||
-pre-compile-single: called before javac compilation of single file | |||||
-post-compile-single: called after javac compilation of single file | |||||
-pre-compile-test: called before javac compilation of JUnit tests | |||||
-post-compile-test: called after javac compilation of JUnit tests | |||||
-pre-compile-test-single: called before javac compilation of single JUnit test | |||||
-post-compile-test-single: called after javac compilation of single JUunit test | |||||
-pre-jar: called before JAR building | |||||
-post-jar: called after JAR building | |||||
-post-clean: called after cleaning build products | |||||
(Targets beginning with '-' are not intended to be called on their own.) | |||||
Example of inserting an obfuscator after compilation could look like this: | |||||
<target name="-post-compile"> | |||||
<obfuscate> | |||||
<fileset dir="${build.classes.dir}"/> | |||||
</obfuscate> | |||||
</target> | |||||
For list of available properties check the imported | |||||
nbproject/build-impl.xml file. | |||||
Another way to customize the build is by overriding existing main targets. | |||||
The targets of interest are: | |||||
-init-macrodef-javac: defines macro for javac compilation | |||||
-init-macrodef-junit: defines macro for junit execution | |||||
-init-macrodef-debug: defines macro for class debugging | |||||
-init-macrodef-java: defines macro for class execution | |||||
-do-jar: JAR building | |||||
run: execution of project | |||||
-javadoc-build: Javadoc generation | |||||
test-report: JUnit report generation | |||||
An example of overriding the target for project execution could look like this: | |||||
<target name="run" depends="Aufgabe10_ChatProgramm-impl.jar"> | |||||
<exec dir="bin" executable="launcher.exe"> | |||||
<arg file="${dist.jar}"/> | |||||
</exec> | |||||
</target> | |||||
Notice that the overridden target depends on the jar target and not only on | |||||
the compile target as the regular run target does. Again, for a list of available | |||||
properties which you can use, check the target you are overriding in the | |||||
nbproject/build-impl.xml file. | |||||
--> | |||||
</project> |
Manifest-Version: 1.0 | |||||
X-COMMENT: Main-Class will be added automatically by build | |||||
build.xml.data.CRC32=d0232020 | |||||
build.xml.script.CRC32=a0f7eb51 | |||||
build.xml.stylesheet.CRC32=f85dc8f2@1.108.0.48 | |||||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. | |||||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. | |||||
nbproject/build-impl.xml.data.CRC32=d0232020 | |||||
nbproject/build-impl.xml.script.CRC32=e7873e67 | |||||
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.108.0.48 |
annotation.processing.enabled=true | |||||
annotation.processing.enabled.in.editor=false | |||||
annotation.processing.processors.list= | |||||
annotation.processing.run.all.processors=true | |||||
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output | |||||
application.title=Aufgabe10_ChatProgramm | |||||
application.vendor=le | |||||
build.classes.dir=${build.dir}/classes | |||||
build.classes.excludes=**/*.java,**/*.form | |||||
# This directory is removed when the project is cleaned: | |||||
build.dir=build | |||||
build.generated.dir=${build.dir}/generated | |||||
build.generated.sources.dir=${build.dir}/generated-sources | |||||
# Only compile against the classpath explicitly listed here: | |||||
build.sysclasspath=ignore | |||||
build.test.classes.dir=${build.dir}/test/classes | |||||
build.test.results.dir=${build.dir}/test/results | |||||
# Uncomment to specify the preferred debugger connection transport: | |||||
#debug.transport=dt_socket | |||||
debug.classpath=\ | |||||
${run.classpath} | |||||
debug.modulepath=\ | |||||
${run.modulepath} | |||||
debug.test.classpath=\ | |||||
${run.test.classpath} | |||||
debug.test.modulepath=\ | |||||
${run.test.modulepath} | |||||
# Files in build.classes.dir which should be excluded from distribution jar | |||||
dist.archive.excludes= | |||||
# This directory is removed when the project is cleaned: | |||||
dist.dir=dist | |||||
dist.jar=${dist.dir}/Aufgabe10_ChatProgramm.jar | |||||
dist.javadoc.dir=${dist.dir}/javadoc | |||||
dist.jlink.dir=${dist.dir}/jlink | |||||
dist.jlink.output=${dist.jlink.dir}/Aufgabe10_ChatProgramm | |||||
endorsed.classpath= | |||||
excludes= | |||||
includes=** | |||||
jar.compress=false | |||||
javac.classpath= | |||||
# Space-separated list of extra javac options | |||||
javac.compilerargs= | |||||
javac.deprecation=false | |||||
javac.external.vm=true | |||||
javac.modulepath= | |||||
javac.processormodulepath= | |||||
javac.processorpath=\ | |||||
${javac.classpath} | |||||
javac.source=17 | |||||
javac.target=17 | |||||
javac.test.classpath=\ | |||||
${javac.classpath}:\ | |||||
${build.classes.dir} | |||||
javac.test.modulepath=\ | |||||
${javac.modulepath} | |||||
javac.test.processorpath=\ | |||||
${javac.test.classpath} | |||||
javadoc.additionalparam= | |||||
javadoc.author=false | |||||
javadoc.encoding=${source.encoding} | |||||
javadoc.html5=false | |||||
javadoc.noindex=false | |||||
javadoc.nonavbar=false | |||||
javadoc.notree=false | |||||
javadoc.private=false | |||||
javadoc.splitindex=true | |||||
javadoc.use=true | |||||
javadoc.version=false | |||||
javadoc.windowtitle= | |||||
# The jlink additional root modules to resolve | |||||
jlink.additionalmodules= | |||||
# The jlink additional command line parameters | |||||
jlink.additionalparam= | |||||
jlink.launcher=true | |||||
jlink.launcher.name=Aufgabe10_ChatProgramm | |||||
main.class=Aufgabe10_ChatProgramm.Start | |||||
manifest.file=manifest.mf | |||||
meta.inf.dir=${src.dir}/META-INF | |||||
mkdist.disabled=false | |||||
platform.active=default_platform | |||||
run.classpath=\ | |||||
${javac.classpath}:\ | |||||
${build.classes.dir} | |||||
# Space-separated list of JVM arguments used when running the project. | |||||
# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. | |||||
# To set system properties for unit tests define test-sys-prop.name=value: | |||||
run.jvmargs= | |||||
run.modulepath=\ | |||||
${javac.modulepath} | |||||
run.test.classpath=\ | |||||
${javac.test.classpath}:\ | |||||
${build.test.classes.dir} | |||||
run.test.modulepath=\ | |||||
${javac.test.modulepath} | |||||
source.encoding=UTF-8 | |||||
src.dir=src | |||||
test.src.dir=test |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project xmlns="http://www.netbeans.org/ns/project/1"> | |||||
<type>org.netbeans.modules.java.j2seproject</type> | |||||
<configuration> | |||||
<data xmlns="http://www.netbeans.org/ns/j2se-project/3"> | |||||
<name>Aufgabe10_ChatProgramm</name> | |||||
<source-roots> | |||||
<root id="src.dir"/> | |||||
</source-roots> | |||||
<test-roots> | |||||
<root id="test.src.dir"/> | |||||
</test-roots> | |||||
</data> | |||||
</configuration> | |||||
</project> |
/* | |||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | |||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template | |||||
*/ | |||||
package Aufgabe10_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.*; | |||||
/** | |||||
* Builder Class | |||||
* @author le | |||||
*/ | |||||
public class Client | |||||
{ | |||||
private static Logger lg = Logger.getLogger("netz"); | |||||
private static final int PORT = 35000; //lt. iana port > 2¹⁵ | |||||
private static final String IP = "127.0.0.1"; | |||||
public Client() throws IOException | |||||
{ | |||||
lg.info("Client: versuche zu verbinden"); | |||||
Socket s = new Socket(IP, PORT); // ACHTUNG blockiert! | |||||
lg.info("Client: Verbindung akzeptiert"); | |||||
InputStream is = s.getInputStream(); | |||||
OutputStream os = s.getOutputStream(); | |||||
//Umwandlung der Byteströme | |||||
InputStreamReader isr = new InputStreamReader(is, "UTF-8"); | |||||
OutputStreamWriter osr = new OutputStreamWriter(os, "UTF-8"); | |||||
//Puffer | |||||
BufferedReader in = new BufferedReader(isr); | |||||
//BufferedWriter out = new BufferedWriter(osr); | |||||
//besser | |||||
PrintWriter out = new PrintWriter(osr); | |||||
lg.info("Client: Streams erfolgreich initialisiert"); | |||||
lg.info("Client: sende Textnachricht"); | |||||
out.println("Hallo Du Server - ich bin ein Client"); | |||||
out.flush(); | |||||
lg.info("Client: warte auf Serverantwort"); | |||||
String nachricht = in.readLine(); // ACHTUNG blockiert | |||||
lg.info("Client: Serverbestätigung erhalten"); | |||||
lg.info("Client: fertig"); | |||||
in.close(); | |||||
out.close(); | |||||
s.close(); | |||||
} | |||||
/** | |||||
* @param args the command line arguments | |||||
*/ | |||||
public static void main(String[] args) | |||||
{ | |||||
try | |||||
{ | |||||
new Client(); | |||||
} | |||||
catch (IOException ex) | |||||
{ | |||||
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex); | |||||
} | |||||
} | |||||
} |
/* | |||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | |||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template | |||||
*/ | |||||
package Aufgabe10_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.*; | |||||
/** | |||||
* Builder Class | |||||
* @author le | |||||
*/ | |||||
public class Server | |||||
{ | |||||
private static Logger lg = Logger.getLogger("netz"); | |||||
private static final int PORT = 35000; //lt. iana port > 2¹⁵ | |||||
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 is = s.getInputStream(); | |||||
OutputStream os = s.getOutputStream(); | |||||
//Umwandlung der Byteströme | |||||
InputStreamReader isr = new InputStreamReader(is, "UTF-8"); | |||||
OutputStreamWriter osr = new OutputStreamWriter(os, "UTF-8"); | |||||
//Puffer | |||||
BufferedReader in = new BufferedReader(isr); | |||||
//BufferedWriter out = new BufferedWriter(osr); | |||||
//besser | |||||
PrintWriter out = new PrintWriter(osr); | |||||
lg.info("Server: Streams erfolgreich initialisiert"); | |||||
lg.info("Server: warte auf Textnachricht"); | |||||
String nachricht = in.readLine(); // ACHTUNG blockiert | |||||
lg.info("Server: Nachricht erhalten"); | |||||
System.out.println("Server: NACHRICHT = " + nachricht); | |||||
// ACHTUNG: blockiert NICHT!!!! | |||||
out.println("Server an Client: Nachricht erhalten"); | |||||
out.flush(); // wichtig | |||||
lg.info("Server: fertig"); | |||||
in.close(); | |||||
out.close(); | |||||
s.close(); | |||||
} | |||||
/** | |||||
* @param args the command line arguments | |||||
*/ | |||||
public static void main(String[] args) | |||||
{ | |||||
try | |||||
{ | |||||
new Server(); | |||||
} | |||||
catch (IOException ex) | |||||
{ | |||||
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex); | |||||
} | |||||
} | |||||
} |
/* | |||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | |||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template | |||||
*/ | |||||
package Aufgabe10_ChatProgramm; | |||||
import java.io.BufferedInputStream; | |||||
import java.io.BufferedOutputStream; | |||||
import java.io.File; | |||||
import java.io.FileOutputStream; | |||||
import java.io.IOException; | |||||
import java.io.InputStream; | |||||
import java.net.MalformedURLException; | |||||
import java.net.URL; | |||||
/** | |||||
* Builder Class | |||||
* @author le | |||||
*/ | |||||
public class Start | |||||
{ | |||||
public Start(String host, String dateiname) throws MalformedURLException, IOException | |||||
{ | |||||
URL oURL = new URL(host + "/" + dateiname); | |||||
InputStream inS = oURL.openStream(); | |||||
BufferedInputStream in = new BufferedInputStream(inS); | |||||
String tmpVerzeichnis = System.getProperty("java.io.tmpdir"); | |||||
String ausgabeDatei = tmpVerzeichnis + File.separator + dateiname; | |||||
FileOutputStream fos = new FileOutputStream(ausgabeDatei); | |||||
BufferedOutputStream out = new BufferedOutputStream(fos); | |||||
int wert = 0; | |||||
while ( (wert = in.read()) >= 0) | |||||
{ | |||||
out.write(wert); | |||||
} | |||||
out.flush(); | |||||
out.close(); | |||||
in.close(); | |||||
System.out.println("Datei " + dateiname + | |||||
" im Verzeichnis " + tmpVerzeichnis + | |||||
" gespeichert"); | |||||
} | |||||
/** | |||||
* @param args the command line arguments | |||||
*/ | |||||
public static void main(String[] args) | |||||
{ | |||||
if (args.length != 2) | |||||
{ | |||||
System.err.println("2 Aufrufparameter nötig: Host und Dateiname"); | |||||
} | |||||
else | |||||
{ | |||||
try | |||||
{ | |||||
new Start(args[0], args[1]); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
System.err.println(ex); | |||||
} | |||||
} | |||||
} | |||||
} |