about Winsock send() and recv()
Hello!
I'm very new on C and Winsock programming (i did some VB with winsock
control).
I've started with a little app. It works pretty well using an ECHO
server: i send a message, and i receive the same. Cool.
But, when i connect with a SMTP, POP or any other service, i receive a
first message, and then it hangs up.
My code:
/******* part: LOOP */
int con = connect(recvskt, (SOCKADDR*) &RetSocket,
sizeof(RetSocket));
if(con != SOCKET_ERROR){
do{
sendm(recvskt);
if(recvm(recvskt) == 0){printf("Block.");}
}while(rcv_b != SOCKET_ERROR);
}else{exit;}
/********** end */
And the send and receive functions (which are properly declared):
/********* functions */
int sendm(int socket){
FD_SET writeable;
FD_ZERO(&writeable);
FD_SET(socket, &writeable);
if(select(socket, 0, &writeable, 0, 0) != SOCKET_ERROR){
scanf("%s\r\n", request);
snd_b = strlen(request);
snd_b = send(socket, (char *)request, (snd_b + 1), 0);
return snd_b;
}else{return(0);}
}
int recvm(int socket){
FD_SET readable;
FD_ZERO(&readable);
FD_SET(socket, &readable);
if(select(socket, &readable, 0, 0, 0) != SOCKET_ERROR){
rcv_b=recv(socket, (char *)buffer, sizeof(buffer), 0);
buffer[rcv_b] = NULL;
strcat(temp, buffer);
printf("%s\r\n", buffer);
return rcv_b;
}else{return(0);}
}
/*********** end */+
Please help. I do not understand why with an ECHO server things works
and not the same with other services. I just want to write a simple
"telnet" or tcp chat app.
Thanks
Nicolas