linux下IP v6 tcp客户端源码示例
2010-01-04 19:23
387 查看
/*********************************** * *client.c * **********************************/ #include<stdio.h> #include<stdlib.h> #include<errno.h> #include<string.h> #include<sys/types.h> #include<netinet/in.h> #include<sys/socket.h> #include<sys/wait.h> #include<unistd.h> #include<arpa/inet.h> #include<resolv.h> #define MAXSIZE 1024 //**************main()************** int main(int argc,char *argv[]) { int sockfd; int n; char recv_buf[MAXSIZE+1]; char send_buf[MAXSIZE+1]; struct timeval tv; fd_set readfd; // 参数判断 if ( argc != 3 ) { printf("USAGE: %s [serv_address][serv_port]/n", argv[0]); exit(1); } // 创建IPV6型的socket if ( (sockfd = socket(PF_INET6, SOCK_STREAM, 0)) < 0 ) { perror("socket"); exit(1); } // 转换服务器IP地址 struct sockaddr_in6 serv_addr; bzero(&serv_addr,sizeof(serv_addr)); serv_addr.sin6_family = AF_INET6; serv_addr.sin6_port = htons( atoi(argv[2]) ); if ( inet_pton(AF_INET6, argv[1], &serv_addr.sin6_addr ) < 0 ) { perror(argv[1]); exit(1); } // 与服务器建立连接 if ( connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr) ) < 0 ) { perror("connect"); exit(1); } printf("Connected to server/n"); while (1) { //----------set last time--------- tv.tv_sec=600; tv.tv_usec=0; FD_ZERO(&readfd); // 将标准输入和与服务连接的文件句柄读事件加入SET FD_SET(0,&readfd); FD_SET(sockfd,&readfd); // 检查是否有读事件发生 if ( select( sockfd+1, &readfd, NULL, NULL, &tv) <= 0 ) { fprintf(stderr,"/n time out/n"); break; } // 如果标准输入中有数据可读,则从其中读取数据,并向服务器发送 if ( FD_ISSET(0,&readfd) ) { if( (n = read(0, send_buf, MAXSIZE-1)) <= 0 ) { break; } send_buf ='/n'; if ( send( sockfd, send_buf, n, 0) <= 0) { perror("send"); break; } } // 如果有从服务器发送过来的数据,则将其读取出来,并输出到标准输出 if ( FD_ISSET(sockfd, &readfd) ) { if ( ( n = recv(sockfd, recv_buf, MAXSIZE-1, 0)) <= 0 ) { fprintf(stderr,"connection closed./n"); exit(1); } recv_buf ='/0'; printf("recved:%s", recv_buf); fflush(stdout); } } close(sockfd); return 0; }
相关文章推荐
- linux下IP v6 tcp服务器端源码示例
- linux下tcp服务器源码示例
- linux下TCP编程示例(服务端/客户端)
- linux下udp客户端源码示例
- Linux TCP/IP 协议栈源码分析
- TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端
- 【Linux4.1.12源码分析】二层报文发送之报文GSO分段(TCP)
- linux环境下搭建一个基于tcp的客户端和服务器
- linux内核参数tcp_syn_retries、tcp_retries1和tcp_retries2的源码分析
- 一个简单的TCP服务器与客户端示例
- linux tcp多线程服务器与客户端编程实例
- linux的tcp服务端、客户端例子
- Linux网络编程之TCP编程,多进程实现多客户端编程
- TCP的socket的服务器端和客户端实例(linux下)
- TCP网络编程中多线程的客户端实现(linux下)
- Linux TCP网络编程示例
- LINUX下如何创建TCP客户端和服务器,实现通信
- 使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序
- 基于TCP的服务器端/客户端(一)---------网络编程(linux----C)