Komunikacja klient-serwer

Komunikacja klient-serwer
YA
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 11 lat
  • Postów:5
0

Witam, jest to mój pierwszy post więc proszę o wyrozumiałość. Z programowania rozproszonego nie jestem orłem więc najłatwiej chyba będzie jak nie będe opisywał problemu własnymi słowami. Do napisania mam program:

Napisz kompletny program wielowątkowego serwera http w Javie działającego w trybie konsoli, który zakłada, że w sieci tcp/ip pod każdym z adresów IP podanym w linii wywołania programu może działać klient http. Serwer do każdego z klientów z IP z listy w wywołaniu wysyła komunikat "Mam Cię"

Jak normalnie radze sobie z połączeniem klient serwer tak z tym fantem nie wiem jak nawet ruszyć. Jeżeli ktoś ma jakiekolwiek pomysły z góry dziękuje :)

Koziołek
Serwer wysyła dane do klientów których IP podano na starcie... Chyba autorowi zadania pomyliły się role klienta i serwera...
Madaoo
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad rok
  • Postów:490
1

Jeżeli chodzi o serwer wielowątkowy to:
http://www.oracle.com/technetwork/java/socket-140484.html

Wydaje Mi się, że piszesz aplikacje która działa na porcie 80 lub 8080 - i jak otworzysz przeglądarke(klienta), to serwer wysyła pakiet z daną "Mam Cię".

Prosty serwer www, napisany w Javie:
http://fragments.turtlemeat.com/javawebserver.php


"Chodzenie po wodzie i tworzenie oprogramowania wg specyfikacji są łatwe, o ile woda i specyfikacja są zamrożone" - Edward V. Berard
YA
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 11 lat
  • Postów:5
0

Czyli, z tego co zrozumiałem.

Tworzę serwer wielowątkowy.
W kodzie definiuje adresy IP klientów http.
W wątku serwera korzystając z tych adresów oraz domyślnego portu http - 80 wysyłam do każdego z nich ciąg znaków "Mam Cię".
Moje pytanie jest takie: Jak mogę sprawdzić czy te dane w ogóle gdzieś się wysłały. Gdzie mogę je gdzieś wyświetlić, ewentualnie je odebrać? Jak sprawdzić czy kod napisany jest poprawny?

EDIT:

Robię trochę po omacku. Udało mi się napisać trochę kodu niestety zwraca on błąd java.net.ConnectException: Connection refused: connect

Kopiuj
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*; 
import javax.swing.*;

public class NowyProjekt
{
    public static void main(String[] args){
        String klientPierwszy = "localhost";
        String klientDrugi = "192.168.1.152";
        Socket klient1;
        try {
            klient1 = new Socket (klientPierwszy, 80);
            PrintWriter wyjscie = new PrintWriter(klient1.getOutputStream(), true);
            wyjscie.println("Mam Cie");
        } catch (IOException e) {
            System.out.println(e);
        }
        Socket klient2;
        try {
            klient2 = new Socket (klientPierwszy, 80);
            PrintWriter wyjscie = new PrintWriter(klient2.getOutputStream(), true);
            wyjscie.println("Mam Cie");
        } catch (IOException e) {
            System.out.println(e);
        }
        
    }
}
edytowany 1x, ostatnio: Yasay
YA
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 11 lat
  • Postów:5
0

Siedzę nad tym od rana. Udało się coś napisać. Program kompiluje i uruchamia się , nie zwraca błędów.

Proszę tylko o opinie czy jest do dobrze napisane.

Kopiuj
import java.io.*;
import java.net.*;

public class NowyProjekt
{
    private static class Polaczenie extends Thread {

        private BufferedReader wejscie;
        private PrintWriter wyjscie;
        private Socket socket;
        private boolean polaczony;
        String adres;

        public Polaczenie(String w) {
            adres = w;
            polaczony = true;
        }

        public void run() {
            try {
                 socket = new Socket (adres, 80);
                 PrintWriter wyjscie = new PrintWriter(socket.getOutputStream(), true);
                 wyjscie.println("Mam Cie");
                 System.out.println("Chyba sie udalo");
            } catch (IOException e) {
                 System.out.println(e);
            } finally {
            }
        }
    }
    public static void main(String[] args){
        try {
                ServerSocket serwer = new ServerSocket(80);

                Polaczenie klient1 = new Polaczenie("localhost");
                Polaczenie klient2 = new Polaczenie("127.0.0.1");
                klient1.start(); 
                klient2.start();
                System.out.println("Polaczylo");
            } catch (SocketException e) {
                System.out.println("Error");
            } catch (Exception e) {
                System.out.println("Error");
            } finally {
                
            }
    }
}

edytowany 2x, ostatnio: Yasay
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1
  1. Wireshark ;]
  2. Pewny jesteś ze coś na tym porcie 80 oczekuje na połączenie?

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.