|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
[C] scambio di stringhe tra client e server
Ciao a tutti,
ho creato un server e un client in C. La mia prima prova è quella di spedire dal client al server due interi e il server risponde al client con la somma dei due addendi. E tutto ciò funziona perfettamente. Il mio prossimo quesito sarebbe quello di inviare al server una parola ("CIAO") e il server risponda al client con un altra parola("UH?") e una volta risposto chiuda il canale. Ora posto solo il codice senza i collegamenti tra client e server, i quali sono funzionanti: lato server: Codice:
static void add_server (int connfd)
{
char buf[MAXBUFL];
size_t n;
char a;
while ((n = Readline (connfd, buf, sizeof(buf)-1)) > 0)
{
char a;
buf[n] = '\0';
if (sscanf(buf,"%c",a) == "CIAO")
snprintf (buf, sizeof(buf), "HU?\r\n");
else
snprintf (buf, sizeof(buf), "Parola sbagliata\r\n", a);
Writen (connfd, buf, strlen(buf));
exit(0);
}
lato client: Codice:
static void add_client (int sockfd)
{
ssize_t n;
char buf[MAXBUFL+1];
char a;
while ( (n = Readline(0,buf,sizeof(buf))) > 0)
{
Writen (sockfd, buf, n);
if ( (n = Readline(sockfd,buf,sizeof(buf))) > 0)
Writen (1, buf, n);
else
err_quit("(%s) error - unexpected EOF from server", prog);
}
}
}
error - unexpected EOF from server Come potrei fare questo esercizio? Dovrei inviare una parola e riceverne una di risposta. Grazie in anticipo Ultima modifica di jarno : 09-03-2009 alle 21:08. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
nessuno?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2008
Messaggi: 401
|
Per favore usa i tag code, poi vedremo di risolvere insieme il problema
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Devi usare le parentesi quadre.
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
ho modificato i programmi, ma al posto di riceve la stringa desiderata(inviata dal server) ricevo una serie di caratteri random (anche se poi sono sempre le stesse, quindi tanto random non sono)
lato client Codice:
#include <sys/types.h>
#include <sys/socket.h>
//"in" per "sockaddr_in"
#include <netinet/in.h>
//"netdb" per "gethostbyname"
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#define MAX 16
int main(void)
{
int r_value;
int sd;
struct sockaddr_in server;
int server_dim;
sd=socket(AF_INET,SOCK_STREAM,0);
server_dim=sizeof(struct sockaddr_in);
server.sin_family=AF_INET;
server.sin_port=htons(9999);
server.sin_addr.s_addr=inet_addr("127.0.0.1");
r_value=connect(sd,(struct sockaddr *)&server,server_dim);
if(r_value==0)
{
printf("Connessione avvenuta\n");
}
if(r_value==-1)
{
printf("Non è stato possibile effettuare una connessione\n");
exit(-1);
}
char buf[MAX];
int rec;
rec=recv(sd,&buf,MAX,0);
if(rec<0)
printf("Errore ricezione\n");
printf("Ricezione avvenuta\n");
printf("Ricevuto saluto \"%s\"\n", buf);
close(sd);
}
lato server Codice:
#include <sys/types.h>
#include <sys/socket.h>
//"in" per "sockaddr_in"
#include <netinet/in.h>
//"fcntl" per la funzione "fcntl"
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#define MAX 16
int main(void)
{
int r_val;
int sd,cd;
struct sockaddr_in server,client;
int server_dim,client_dim;
sd=socket(AF_INET,SOCK_STREAM,0);
server_dim=sizeof(struct sockaddr_in);
server.sin_family=AF_INET;
server.sin_port=htons(9999);
server.sin_addr.s_addr=INADDR_ANY;
r_val=bind(sd,(struct sockaddr *)&server,server_dim);
if(r_val==-1)
{
printf("Impossibile aprire una porta in ascolto\n");
exit(-1);
}
listen(sd,5);
cd=accept(sd,(struct sockaddr *)&client,&client_dim);
if(cd==-1)
{
printf("Impossibile aprire una connessione di ingresso\n");
exit(-2);
}
if((r_val==0) && (cd==0))
{
printf("Connessione avvenuta\n");
}
char buf[MAX];
strcpy(buf,"aiaooo");
send(sd,buf,strlen(buf), 0);
printf("%s\n",buf);
close(sd);
}
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
risolto...avevo sbagliato il socket del client server, era cd e non sd
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
L'errore è qui:
rec=recv(sd,&buf,MAX,0); |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:42.



















