Oppure

Loading
30/05/08 16:41
^JAVA^
Ciao raga come va?
Dovrei creare un programma (Client/Server) in D(in ambiente Linux),potete dirmi che librerie devo includere?
Ciao.
aaa
30/05/08 17:13
Dax89
Ciao!
Allora questo è un client

import std.stdio;  //Libreria standard
import std.socket; //Per usare i socket in D

int main(string[] args)
{
	//Istanzio la classe TcpSocket
	TcpSocket sock = new TcpSocket();

	//new InternetAddress(indirizzo, porta)
	sock.connect(new InternetAddress("www.indirizzo.it", 8080));

	//Invio testo
	sock.send("Testo");
}


Per il server dovrebbe essere più o meno così (ancora non ne ho mai fatto uno :-|):

import std.stdio;
import std.socket;

int main(string[] args)
{
	char[255] buffer;
	
	//Istanzio la classe TcpSocket
	TcpSocket sock = new TcpSocket();

	//E' possibile omettere l'indirizzo perchè
	//c'è un costruttore che accetta solo la porta
	//e come indirizzo prende quello del pc.
	sock.bind(new InternetAddress(8080));
	sock.listen(1);	

	//Accetto la connessione in ingresso
	TcpSocket client = sock.accept();

	//Ricevo i dati inviati
	client.receive(buffer);	
}


:k:
aaa
30/05/08 21:29
^JAVA^
Innanzitutto grazie funziona quasi tutto perchè quando provo a visualizzare l' array di char(buffer) del server mi da invalid UTF-8.
Ciao.
aaa
31/05/08 13:19
Dax89
mmmh, si anche io ho ogni tanto quel problema, devo ancora capire perchè...
Prova a cambiare il tipo del buffer in ubyte ad esempio.
Oppure, quando stampi su schermo fai:

import std.string; //Importa questo modulo aggiuntivo.

char[255] buffer; //Il buffer dove vengono messi i dati ricevuti

//buffer.ptr è come &buffer (puoi usare entrambi i metodi)
writefln("%s", std.string.toString(buffer.ptr));



Non sono sicuro che funzioni comunque 8-|
Ultima modifica effettuata da Dax89 31/05/08 13:20
aaa
31/05/08 14:15
^JAVA^
Ciao, ho provato a fare come mi hai detto te ma non va lo stesso, dando un occhiata al sito della Digital Mars sono riuscito a risolvere:
Client:
_________________________
import std.stdio; //Libreria standard
import std.socket; //Per usare i socket

void main(string[] args)
{
//Istanzio la classe TcpSocket
TcpSocket sock = new TcpSocket();

//new InternetAddress(indirizzo, porta)
sock.connect(new InternetAddress("IP", porta));
char[]str="Hello Socket!";
//Invio testo
sock.send(cast(ubyte[])str);//Lo converto in ubyte
sock.close();//Chiudo la socket
}
Server:
____________________________________
import std.stdio;
import std.socket;
void main(string[] args)
{
ubyte[] buffer=new ubyte[255];


TcpSocket sock = new TcpSocket();//Istanzio la classe TcpSocket

//E' possibile omettere l'indirizzo perchè
//c'è un costruttore che accetta solo la porta
//e come indirizzo prende quello del pc.
sock.bind(new InternetAddress(Porta));
sock.listen(1);



Socket serv=sock.accept();//Accetto la connessione in ingresso

serv.receiveFrom(buffer);//Ricevo i dati inviati e li immagazziono in un buffer
writefln(cast(string)buffer);//Li stampo a video
sock.close();//Chiudo i socket
serv.close();
}

Grazie e Ciao!!!
Ultima modifica effettuata da ^JAVA^ 31/05/08 14:17
aaa