bouncey2k
19-04-2006, 18:06
Ho creato un server che apre una determinata porta (21). Con il client (telnet) provo a connettermi e la connessione va a buon fine tale che mi arriva un messaggio con scritto "Ciao. Sono attivo". Appena fatto ciò, lo schermo di telnet rimane nero e non mi permette di mandare comandi. Perché?
Vi posto il codice
#include <stdio.h>
#include <winsock2.h>
// Ricordarsi di linkare la libreria libwsock32.a
int main (int argn, char **argv)
{
// dichiaro le variabili
WORD data1;
WSADATA data2;
SOCKET mysock, client;
struct sockaddr_in mysock_addr, client_addr;
int backlog = SOMAXCONN;
int addr_len;
char mex[] = "Ciao. Sono attivo.\n\n";
data1 = MAKEWORD (2, 0);
WSAStartup (data1, &data2);
// Creo e definisco il socket
mysock = socket (AF_INET, SOCK_STREAM, 0);
mysock_addr.sin_family = AF_INET;
mysock_addr.sin_port = htons (21);
mysock_addr.sin_addr.s_addr = INADDR_ANY;
bind (mysock, (struct sockaddr*)&mysock_addr, sizeof (struct sockaddr_in));
listen (mysock, backlog);
// printf ("In attesa di una connessione...\n");
addr_len = sizeof (struct sockaddr);
client = accept (mysock, (struct sockaddr*)&client_addr, &addr_len);
send (client, mex, strlen(mex), 0);
while (EOF != getchar());
closesocket(client);
closesocket(mysock);
WSACleanup();
return(0);
}
Vi posto il codice
#include <stdio.h>
#include <winsock2.h>
// Ricordarsi di linkare la libreria libwsock32.a
int main (int argn, char **argv)
{
// dichiaro le variabili
WORD data1;
WSADATA data2;
SOCKET mysock, client;
struct sockaddr_in mysock_addr, client_addr;
int backlog = SOMAXCONN;
int addr_len;
char mex[] = "Ciao. Sono attivo.\n\n";
data1 = MAKEWORD (2, 0);
WSAStartup (data1, &data2);
// Creo e definisco il socket
mysock = socket (AF_INET, SOCK_STREAM, 0);
mysock_addr.sin_family = AF_INET;
mysock_addr.sin_port = htons (21);
mysock_addr.sin_addr.s_addr = INADDR_ANY;
bind (mysock, (struct sockaddr*)&mysock_addr, sizeof (struct sockaddr_in));
listen (mysock, backlog);
// printf ("In attesa di una connessione...\n");
addr_len = sizeof (struct sockaddr);
client = accept (mysock, (struct sockaddr*)&client_addr, &addr_len);
send (client, mex, strlen(mex), 0);
while (EOF != getchar());
closesocket(client);
closesocket(mysock);
WSACleanup();
return(0);
}