- 论坛徽章:
- 0
|
keyword:socket select
最近开始堆应用程序的代码,呵呵,我仅仅只会C和C++,但是做了这么长时间的底层工作再来写代码,感觉很不一样,特别是linux源码给了我很多启发。呵呵,本文仅仅只是作为我个人的备忘记录,如果对你我所帮助,那将是我的荣幸!
/*
实现tcp客户端连接超时退出。
*/
//===================================================
#define PORT 2400
#define REMOTE_IP "192.xxx.xxx.xxx"
#define TCP_LEN 1500
char buffer[TCP_LEN]={0};
int main()
{
int sockfd;
fd_set fds;
struct sockaddr_in server_addr;
struct timeval timeout={5,0};
int maxfdp = 0;
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1){
printf("Socket Error\n");
return 0;
}
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
server_addr.sin_addr.s_addr = inet_addr(REMOTE_IP);
if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr)) == -1){
printf("Connect error\n");
return 0;
}
while(1){
FD_ZERO(&fds);
FD_SET(sockfd,&fds);
maxfdp = sockfd +1;
if(select(maxfdp,&fds,&fds,NULL,&timeout) > 0){
if(FD_ISSET(sockfd,&fds)){
read(sockfd,buffer,sizeof(buffer));
printf("SOCKET RECV :%s\n",buffer);
memset(buffer,0,TCP_LEN);
}else{
printf("BYE BYE SOCKET\n");
close(sockfd);
break;
}
}
}
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/91378/showart_2075400.html |
|