Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
C: schema di comunicazione
con connessione
socket() socket()
bind()
listen()
accept() connect()
close() close()
bind() bind()
sendto() / sendto() /
recvfrom() recvfrom()
close() close()
SERVER CLIENT
LING. C- DIFFICOLTA’ INDIRIZZI
= gethostbyname(“www.nome.dom”);
struct sockaddr_in
puntatore a AF_INET
sin_family
htons (porta) sin_port
struct hostent struct in_addr
bcopy()
unsigned long s_addr
h_addr
h_length
oppure
inetaddr(“xxx.xxx.xxx.xxx”);
Import java.io.*;
import java.net.*;
public Socket()
public Socket(String host, int port) throws
UnknownHostException, IOException costruttori
…
public void connect(SocketAddress endpoint)
throws IOException
public InputStream getInputStream()
throws IOException
public OutputStream getOutputStream()
throws IOException
public void close() throws IOException
s.getOutputStream().write() / s.getInputStream().read() /
s.getInputStream().read() s.getOutputStream().write()
Socket.close() Socket.close()
s.connect(new InetSocketAddress(host,port));
InputStream in = s.getInputStream();
int car=in.read();
s.close();
new DataOutputStream(s.getOutputStream()).writeBytes(riga);
s.close();
}
}}
Socket s=ServerSocket.accept()
s.getOutputStream().write() /
Thread() s.getInputStream().read()
Socket.close()
Thread
Un thread è anche definito “processo
leggero”
Viene creato un nuovo flusso (thread
letteralmente si traduce come “filo”) di istruzioni
eseguito parallelamente a quelle del processo
che lo ha generato
Un unico flusso sequenziale di istruzioni si divide
così in due “filoni” paralleli
Condivide lo stesso spazio di memoria del
processo che lo ha generato e degli altri
eventuali thread
gestore.start();
start()
Esempio:
class Esempio {
public static void main(String[] args){
new gestoreThread(“nome1”).start();
new gestoreThread(“nome2”).start();
}
Esempio di output:
Client2
Client1 introduci numeri il server calcolerà il
introduci numeri il server calcolerà il totale totale
introduci un num (0 per finire) introduci un num (0 per finire)
5.0 15
Totale = 5.0 Totale = 15.0
introduci un num (0 per finire) introduci un num (0 per finire)
16 30.2
Totale = 21.0 Totale = 45.2
introduci un num (0 per finire) introduci un num (0 per finire)
clientSMTP
HELO\n
ServerSMTP MAIL FROM: accaountposta\n
RCPT TO: accountposta\n
DATA\n
\n.\n
QUIT
Matricola (5 caratteri)
ServerVoti Posizione / -1 se err (int)
Codice Materia (4 caratteri)
Voto / -1 se err (int)
classe DatagramPacket
s.send(DatagramPacket) / s.receive(DatagramPacket) /
s.receive(DatagramPacket) s.send(DatagramPacket)
close() close()