Oppure

Loading
18/10/13 21:30
Valcars
Salve sono sempre io a rompere le scatole....volevo sapere perchè quando invio una stringa da input da tastiera e la invio al server mi compaiono dei caratteri strani... per farvi capire meglio questa volta vi posto un'immagine e il sorgente dell'invio e ricezione del messagio

Client -- manda messaggio al server da input


int bytesSent;
int bytesRecv = SOCKET_ERROR;
char send_cmd[1024] ;			
char recv_cmd[1024] ;	

printf("inserisci un comando\n");
scanf("%s",send_cmd);
bytesSent = send (m_socket, send_cmd, strlen (send_cmd), 0);
if (bytesSent == SOCKET_ERROR)
	printf("Server: send() errore %ld \n", WSAGetLastError ());
else
{
printf("inviato coimando");
}


Server -- Riceve messaggio 

int BytesSent;
int bytesRecv = SOCKET_ERROR;
char send_cmd [200];
char recv_cmd [200] ;

//riceve il comando 
bytesRecv = recv (m_socket, recv_cmd, strlen(recv_cmd), 0);
if (bytesRecv == SOCKET_ERROR)
	{
	printf("errore comando \n");
	}
else
	{
	printf("%s \n",recv_cmd);


ps questo codice è scritto in un void esterno forse centra anche questo???

cmq ho allegato anche l'immagine la console sopra è il server e quella sotto il client
aaa
19/10/13 8:09
nessuno
Quando esegui la recv con

bytesRecv = recv (m_socket, recv_cmd, strlen(recv_cmd), 0);

la strlen non ha senso dato che la stringa, alla chiamata, non esiste ancora.
Quindi indicherai

bytesRecv = recv (m_socket, recv_cmd, 200, 0);

ma una volta ricevuta, dovrai terminarla (con il NUL a fine stringa) e lo farai scrivendo

if (bytesRecv == SOCKET_ERROR)
{
printf("errore comando \n";);
}
else
{
recv_cmd[bytesRecv]=0;
printf("%s \n",recv_cmd);
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
19/10/13 8:41
Valcars
    Quando esegui la recv con

bytesRecv = recv (m_socket, recv_cmd, strlen(recv_cmd), 0);

la strlen non ha senso dato che la stringa, alla chiamata, non esiste ancora.
Quindi indicherai

bytesRecv = recv (m_socket, recv_cmd, 200, 0);

ma una volta ricevuta, dovrai terminarla (con il NUL a fine stringa) e lo farai scrivendo

if (bytesRecv == SOCKET_ERROR)
{
printf("errore comando \n";);
}
else
{
recv_cmd[bytesRecv]=0;
printf("%s \n",recv_cmd);




grazie mille nessuno mi hai risolto anche un'altro dubbio spiegardomelo :D cmq appena torno a casa ti faccio sapere :) grazie ancora


----- EDIT
bene funge grazie tante :)
Ultima modifica effettuata da Valcars 19/10/13 13:13
aaa