diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3eb1a6f --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.vscode +target +server/server \ No newline at end of file diff --git a/README.md b/README.md index 600b8d7..7902a9b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,20 @@ # Projekt_SIK -Projekt 1 Sieci Komputerowe +Projekt 1 Sieci Komputerowe
+Wykorzystujemy protokol TCP!
-klient w javie +W gitignore dodalem pliki ktore nie maja byc przesylane na repozytorium. U mnie sa to smieci produkowane z Visual Studio Code oraz folder target z javy - tam jest generowany plik jar przez maven (jak zrobi sie maven install), mozna to robic lokalnie, nie trzeba przesylac na repozytorium. Dodatkowo nie przesylamy skompilowanego pliku z C czyli server/server. -serwer w C +## klient +W javie. Wykorzystalem to narzedzie maven, na Inzynierii oprogramowania je uruchomil. W skrocie sluzy do tego zebysmy potem mogli ladnie wyeksportowac plik javy do jednego pliku ktory mozemy uruchomic - takie narzedzie co kompiluje nam jave pozniej. Caly kod jest w App.java, wysylanie wiadomosci dziala - uwaga na wielkosc wiadomosci - te bajty. Bedziemy musieli chyba zrobic tak ze wiadomosci tekstowe sa rozdzielane na takie segmenty odpowiedniej wielkosci zeby pozniej je ladnie wyslac bo niestety C w ktorym jest napisany serwer musi miec dokladnie okreslona wielkosc odbieranej wiadomosci. + +## serwer +W C.
+Done: +* laczenie sie z pojedynczym klientem +* odbieranie wiadomosci tekstowych od jednego klienta i wyswietlanie je w konsoli + +TODO: +* polaczenie od wielu klientow +* odbieranie duzych plikow +* przekazywanie wiadomosci do klienta diff --git a/klient/.classpath b/klient/.classpath new file mode 100644 index 0000000..71f5fef --- /dev/null +++ b/klient/.classpath @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/klient/.project b/klient/.project new file mode 100644 index 0000000..41b91cc --- /dev/null +++ b/klient/.project @@ -0,0 +1,23 @@ + + + Projekt + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/klient/.settings/org.eclipse.core.resources.prefs b/klient/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..f9fe345 --- /dev/null +++ b/klient/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/klient/.settings/org.eclipse.jdt.apt.core.prefs b/klient/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..d4313d4 --- /dev/null +++ b/klient/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/klient/.settings/org.eclipse.jdt.core.prefs b/klient/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..b11489f --- /dev/null +++ b/klient/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.processAnnotations=disabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/klient/.settings/org.eclipse.m2e.core.prefs b/klient/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/klient/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/klient/pom.xml b/klient/pom.xml new file mode 100644 index 0000000..76b162c --- /dev/null +++ b/klient/pom.xml @@ -0,0 +1,74 @@ + + + + 4.0.0 + + SieciKomp + Projekt + Final + + Projekt + https://git.wmi.amu.edu.pl/s444341/Projekt_SIK + + + UTF-8 + 1.7 + 1.7 + + + + + junit + junit + 4.11 + test + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/klient/src/main/java/Projekt/App.java b/klient/src/main/java/Projekt/App.java new file mode 100644 index 0000000..afc926a --- /dev/null +++ b/klient/src/main/java/Projekt/App.java @@ -0,0 +1,41 @@ +package Projekt; + +import java.io.*; +import java.net.*; + +public class App +{ + public static void main(String[] args) { + try { + // USTALAMY adres serwera i port - trzeba wpisac to co wyrzuca po uruchomieniu serwer + InetAddress addr = InetAddress.getByName("0.0.0.0"); + int port = 44444; //Integer.parseInt(args[1]); + + // utworz gniazdo i od razu podlacz je do addr:port + Socket socket = new Socket(addr, port); + + //strumienie + DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); //tu wysylamy wiadomosci + DataInputStream dis = new DataInputStream(socket.getInputStream()); //tu bedziemy przyjmowac wiadomosci + + //wiadomosc musimy stworzyc tak zeby miala 1024 bajty - tak zeby pasowala do tablicy charow z serwera! + byte[] mess = new byte[1024]; + String str = "Hello world from java!"; + mess = str.getBytes(); //konwertujemy na bajty + dos.write(mess); //wysylamy + + + // czytaj odpowiedz to jest kod golinskiego + //String s = dis.readUTF(); + // wypisz odpowiedz + //System.out.println("Serwer powiedzial: "+s); + dis.close(); + dos.close(); + socket.close(); + + } catch (Exception e) { //kiepskie lapanie wyjatkow!! lepiej bardziej sprecyzowac jaki wyjatek lapiemy + e.printStackTrace(); + } + System.out.println("Klient zakonczyl dzialanie"); + } +} diff --git a/klient/src/main/java/klient.java b/klient/src/main/java/klient.java deleted file mode 100644 index e69de29..0000000 diff --git a/klient/src/test/java/Projekt/AppTest.java b/klient/src/test/java/Projekt/AppTest.java new file mode 100644 index 0000000..2e37432 --- /dev/null +++ b/klient/src/test/java/Projekt/AppTest.java @@ -0,0 +1,20 @@ +package Projekt; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class AppTest +{ + /** + * Rigorous Test :-) + */ + @Test + public void shouldAnswerWithTrue() + { + assertTrue( true ); + } +} diff --git a/server/server.c b/server/server.c new file mode 100644 index 0000000..2f4de9f --- /dev/null +++ b/server/server.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include +#include +#include + +int main(void) { + char bufor[1024]; //wiadomosc + int gniazdo, gniazdo2; + struct sockaddr_in adr, nadawca; + socklen_t dl = sizeof(struct sockaddr_in); + + gniazdo = socket(PF_INET, SOCK_STREAM, 0); + adr.sin_family = AF_INET; + adr.sin_port = htons(44444); //port + adr.sin_addr.s_addr = INADDR_ANY; + + printf("Slucham na %s:%d\n", inet_ntoa(adr.sin_addr), ntohs(adr.sin_port)); + + if (bind(gniazdo, (struct sockaddr*) &adr, sizeof(adr)) < 0) { //bind + printf("Bind nie powiodl sie.\n"); + return 1; + } + if (listen(gniazdo, 10) < 0) { //listen + printf("Listen nie powiodl sie.\n"); + return 1; + } + printf("Czekam na polaczenie ...\n"); + while ((gniazdo2 = accept(gniazdo, (struct sockaddr*) &nadawca, &dl)) > 0) { //odbieranie + memset(bufor, 0, 1024); + recv(gniazdo2, bufor, 1024, 0); + printf("Wiadomosc od %s: %s\n", inet_ntoa(nadawca.sin_addr), bufor); + close(gniazdo2); + } + close(gniazdo); + return 0; +} \ No newline at end of file diff --git a/serwer/serwer.c b/serwer/serwer.c deleted file mode 100644 index e69de29..0000000