[SOLVED] Socket client with select
by end from LinuxQuestions.org on (#4Y9EP)
hi
i try put select this way but when i recive message it exit loop and shutdown.
Code:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include<arpa/inet.h>
#include <fcntl.h>
#include <errno.h>
int main(int argc , char *argv[] )
{
int sockett;
struct sockaddr_in server;
char buffer[1024];
char bufferr[1024]="hi server";
int result;
fd_set readset;
if(argc<3)
{
printf("Usage ip port:: a.out 127.0.0.1 80\n");
exit(0);
}
sockett=socket(AF_INET,SOCK_STREAM ,0);
if (sockett<0)
printf("SOCKET ERROR\n");
else
printf("SOCKET_CREATED\n");
server.sin_family=AF_INET;
server.sin_port= htons(atoi(argv[2]));
server.sin_addr.s_addr =inet_addr(argv[1]);
int ret;
ret=connect(sockett, (struct sockaddr *)&server, sizeof(struct sockaddr_in));
if( ret < 0 )
{ printf("NOT_CONNECTED\n");
}
else
printf("CONNECTED\n");
FD_ZERO(&readset);
FD_SET(sockett,&readset);
while(ret);
{
result=select(sockett + 1, &readset ,0 ,0 ,0);
if(result <0)
{
printf("SELECT_ERROR\n");
}
else
printf("SELECT\n");
FD_ISSET(sockett,&readset);
printf("fdisset\n");
result=recv(sockett, buffer, 1024, 0);
printf("%s\n",buffer);
}
//send(sockett,bufferr,1024,0);
//recv(sockett, buffer, 1024, 0);
//printf("%s\n",buffer);
}


i try put select this way but when i recive message it exit loop and shutdown.
Code:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include<arpa/inet.h>
#include <fcntl.h>
#include <errno.h>
int main(int argc , char *argv[] )
{
int sockett;
struct sockaddr_in server;
char buffer[1024];
char bufferr[1024]="hi server";
int result;
fd_set readset;
if(argc<3)
{
printf("Usage ip port:: a.out 127.0.0.1 80\n");
exit(0);
}
sockett=socket(AF_INET,SOCK_STREAM ,0);
if (sockett<0)
printf("SOCKET ERROR\n");
else
printf("SOCKET_CREATED\n");
server.sin_family=AF_INET;
server.sin_port= htons(atoi(argv[2]));
server.sin_addr.s_addr =inet_addr(argv[1]);
int ret;
ret=connect(sockett, (struct sockaddr *)&server, sizeof(struct sockaddr_in));
if( ret < 0 )
{ printf("NOT_CONNECTED\n");
}
else
printf("CONNECTED\n");
FD_ZERO(&readset);
FD_SET(sockett,&readset);
while(ret);
{
result=select(sockett + 1, &readset ,0 ,0 ,0);
if(result <0)
{
printf("SELECT_ERROR\n");
}
else
printf("SELECT\n");
FD_ISSET(sockett,&readset);
printf("fdisset\n");
result=recv(sockett, buffer, 1024, 0);
printf("%s\n",buffer);
}
//send(sockett,bufferr,1024,0);
//recv(sockett, buffer, 1024, 0);
//printf("%s\n",buffer);
}