• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java socket server i client

VPS Starter Arubacloud
0 głosów
2,801 wizyt
pytanie zadane 7 maja 2018 w Java przez Patryk8090 Użytkownik (520 p.)
zmienione kategorie 7 maja 2018 przez Patryk8090

Siemka, od paru dni siedzę nad kodem który ma za zadanie wysłać od strony servera do strony clienta wiadomość od razu gdy ten się połączy. Połączenie wykonuje się bezbłędnie, ale wysyłanie wiadomości... w ogóle... Przeszukałem Internety i nic... nie pomaga. Ostatnią nadzieją jesteście Wy. Z góry mega dziękuje! Pozdrawiam :)

KOD SERVER,JAVA

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringReader;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.Socket.*;
import java.util.Scanner;
import java.net.ServerSocket.*;


class Server{

    static ServerSocket serverSocket;
    static Socket client = null;
    static String command;
    static String message;
    static Scanner scanner;
    static Scanner sendMessage;
    static int port;
    static int ip;
    static boolean isToSend = false;

    public static void main(String[] args) throws Exception {
        scanner = new Scanner(System.in);
        sendMessage = new Scanner(System.in);

        EnterPortAndIp();
        CreateSocket();
        SendToClient();
    }

    static void CreateSocket(){
        try{  
            serverSocket = new ServerSocket(port);
            client = serverSocket.accept();
         }catch(Exception e){
            System.out.println(e);
        }
       
    }

    static void SendToClient(){
        try{
           while(true){
                PrintWriter out = null;
                out = new PrintWriter(client.getOutputStream() , true);
                BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

                String a = in.readLine();
                System.out.println("message: " + a);
            }
        }catch(Exception e){
            System.out.println(e);
        }
    }

    static void EnterPort(){
        scanner = new Scanner(System.in);

        System.out.print("Please enter port: ");
        port = scanner.nextInt();
    }

 KOD CLIENT.JAVA

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.Socket.*;
import java.util.Scanner;

import java.net.ServerSocket.*;


class Client{

    static Socket client2;
    static Scanner scanner;
    static String ip;
    static String message;
    static String command;
    static int port;
    static  BufferedReader in = null;

    public static void main(String[] args) {
        scanner = new Scanner(System.in);
        EnterIpAndPort();
        CreateSocket();        
        
    }

    static void CreateSocket(){
        try{
            client2 =  new Socket(ip, port);
            MessageFromServer();
        }
        catch(Exception e){
            System.out.println(e);
        }
    }

    static void EnterIpAndPort(){
        System.out.print("Please enter ip: ");
        ip = scanner.next();
        System.out.print("Please enter port: ");
        port = scanner.nextInt();
    }

    static void StatusConnection (){
        if(client2.isConnected()){
            System.out.println("connect status: " + client2.isConnected());
        }
    }

    static void MessageFromServer(){
        System.out.println("Message form server: ");
        try{
            while(true){
                BufferedReader in = new BufferedReader(new InputStreamReader(client2.getInputStream()));
                PrintWriter out = new PrintWriter(client2.getOutputStream());
                DataOutputStream outData = new DataOutputStream(client2.getOutputStream());
                BufferedReader inServer = new BufferedReader(new InputStreamReader(System.in));
                
                while(true){
                    while(in.ready()){
                        System.out.println(in.readLine());
                    }
                }
                
            }
        }catch(Exception e){
            System.out.println(e);
        }
    }

}

 

komentarz 7 maja 2018 przez mbabane Szeryf (79,280 p.)

W kodzie serwera w metodzie SendToClient nigdzie nie wywołujesz out.write(message); 

We wspomnianej metodzie jest tylko in.readLine() co oznacza ze serwer czeka na dane od klienta.

1
komentarz 7 maja 2018 przez Patryk8090 Użytkownik (520 p.)
w sumie.... to ma sens.... zaraz spojrze w kod i powiem czy jakiś postęp zrobiłem
komentarz 7 maja 2018 przez Patryk8090 Użytkownik (520 p.)

@mbabane, poprawiłem serwer, ale Client dalej nie odbiera wiadomości...

komentarz 7 maja 2018 przez mbabane Szeryf (79,280 p.)

Ok, ponieważ dawno nie pisałem aplikacji na Socketach i nie chce sie rozpisywać zeby nie gadać głupot, to masz tutaj przykład:

http://cs.lmu.edu/~ray/notes/javanetexamples/

tam jest używana metoda out.println(message).

komentarz 7 maja 2018 przez Patryk8090 Użytkownik (520 p.)
Dziękuję! :)
1
komentarz 8 maja 2018 przez Patryk8090 Użytkownik (520 p.)

@mbabane, dzieki, działa :D

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 573 wizyt
0 głosów
1 odpowiedź 168 wizyt
pytanie zadane 22 listopada 2019 w C i C++ przez Munvik Dyskutant (9,350 p.)
0 głosów
0 odpowiedzi 164 wizyt
pytanie zadane 26 września 2018 w C# przez kubekszklany Gaduła (3,170 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...