client/server

Stato
Discussione chiusa ad ulteriori risposte.

jackoff

Utente Silver
11 Giugno 2007
23
9
0
65
@edit: dark shadow p.s tag.

ciao
sto imparando ad utilizzare i socket in java ma ho qualche problema...
ne il server ne il client visualizza su video il messaggio.
perche?
SERVER:
Codice:
import java.io.*;
import java.net.*;

public class Main {

   
    public static void main(String[] args) throws IOException 
    {
        ServerSocket server=new ServerSocket(666);
        while(true)
        {
            System.out.println("Server In Attesa Del Client...");
            Socket client=server.accept();
            System.out.println("Un Client Si è Connesso!!!");
            DataOutputStream os=new DataOutputStream(client.getOutputStream());
            BufferedReader is=new BufferedReader(new InputStreamReader(client.getInputStream()));
            
            os.writeBytes("server: messaggio dal server");
            System.out.println(is.readLine());
            
            os.close();
            is.close();
            server.close();
            
            
        }
        
    }
       

}

CLIENT:
Codice:
import java.io.*;
import java.net.*;
public class Main {

   
    public static void main(String[] args) throws IOException {
        
        Socket client=new Socket("localhost",666);
        
        DataOutputStream os=new DataOutputStream(client.getOutputStream());
        BufferedReader is=new BufferedReader(new InputStreamReader(client.getInputStream()));
        System.out.println(is.readLine());
        os.writeBytes("client: messaggio dal client");
        
        is.close();
        os.close();
        client.close();
    }

}
 
RE: [aiuto]client/server

La porta e' troppo bassa, da quanto ne so sotto la 1024 sono protette dal sistema, usane una sopra il 10000 e vai tranquillo, intanto prova cosi' :)
 
RE: [problema]client/server

xkè non usi dei tray catch e il debugger per vedere cosa non funge!
 
RE: [problema]client/server

facendo il debug con il server mi escono questi errori:
Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at java.net.ServerSocket.<init>(ServerSocket.java:97)
at server.Main.main(Main.java:20)
ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [../../../src/share/back/util.c:820]
Java Result: 1
debug:
BUILD SUCCESSFUL (total time: 1 second)

EDIT: questo problema l'ho risolto...il server era ancora in esecuzione
il debug con il server mi dice:
Listening on 1777
User program running
invece quello del client:
Listening on 1779
User program running
 
RE: [problema]client/server

server.java:
Codice:
import java.io.*;
import java.net.*;

public class server {
    public static void main(String[] args) throws IOException
    {
        ServerSocket server = new ServerSocket(2707);
        
        while (true) {
            System.out.println("Server In Attesa Del Client...");

            Socket client = server.accept();
            System.out.println("Un Client Si è Connesso!!!");
            
            PrintWriter os = new PrintWriter(client.getOutputStream(), true);
            BufferedReader   is = new BufferedReader(new InputStreamReader(client.getInputStream()));
            
            os.println("server: messaggio dal server");
            System.out.println(is.readLine());
        }
    }
}
client.java:
Codice:
import java.io.*;
import java.net.*;

public class client {
    public static void main(String[] args) throws IOException {   
        Socket client = new Socket("127.0.0.1", 2707);
        
        PrintWriter os = new PrintWriter(client.getOutputStream(), true);
        BufferedReader   is = new BufferedReader(new InputStreamReader(client.getInputStream()));
        
        System.out.println(is.readLine());
        os.println("client: messaggio dal client");
        
        is.close();
        os.close();
        client.close();
    }
}

Era il DataOutputStream che non andava bene, divertiti :3
 
RE: [problema]client/server

funziona!!!
grazie
adesso per esercitarmi voglio fare una chat ma solo tra 2 pc cioè solo un utente puo connettersi al server.
ho una domanda....
per fare la chat devo utlizzare i thread uno che legge e scrive su video e l'altro riceve da tastiera e lo manda giusto?
 
RE: [problema]client/server

Esatto, pero' facendolo in terminale si potrebbero creare un po' di casini, perche' ad esempio mentre tu stai scrivendo potrebbe arrivare un messaggio e ti troveresti i testi incasinati, ti converrebbe implementare una semplice interfaccia ed usare gli eventi per quando arriva del testo in ingresso :)
 
RE: [problema]client/server

ci sono dei layout predefiniti?
io ho utlizzato p.setLayout(new GridLayout(0,3));
il problema è che sia le label che i textfield e bottoni esconi enormi e non riesco a rimpicciorirli ne anche usando i metodi setsize...
ci sono altri layout?
 
RE: [problema]client/server

si...come no,FlowLayout (che è quello di default nei JFrame),BorderLayout e con il GridLayout sono quelli basilari!qui puoi trovare come vengono usati...e sulla documentazione di java trovi tutti i metodi!
prova questa:
Codice:
import javax.swing.*;
  public class Finestra extends JFrame{
   JPanel p=new JPanel();
   JTextField port=new JTextField("23",5);
   JTextField inputT=new JTextField(30);
   JButton b=new JButton("Invia");
   JScrollPane sp=new JScrollPane(ta);
   add(p);
   p.setLayout(new FlowLayout());
   p.add(sp,"CENTER");
   p.add(inputT,"SOUTH");
   setSize(470,280);
   setLocation(280,226);
   setAlwaysOnTop(false);
   setResizable(false);
   setVisible(true);
   show();
}
fatta di fretta...senza compilare.spero che sia corretta!
 
RE: [problema]client/server

Ragà conoscete qualche plugin per eclipse che permetta di creare interfacce in modo semplice?
tipo col "drag and drop" :lol:
 
RE: [problema]client/server

raga' non sono esperto di java...
mi sapete dire che errori sono questi?

Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at client.main(client.java:7)

ho tentato di compilare il client postato nell'altra pagina...
 
RE: [problema]client/server

controlla la porta se è uguale a quella del server....
 
RE: [problema]client/server

hai ragione...cacchio...io pensavo che fosse un errore di compilazione!!
invece è un errore di esecuzione....
ma con eclipse nn c'è l'opzione che permette di compilare solamente senza runnare il programma??
 
RE: [problema]client/server

ok ti ringrazio...
cmq il problema nn era la porta,ma il fatto che il server non era in esecuzione....
:tunz:
 
Stato
Discussione chiusa ad ulteriori risposte.