日期:2014-05-16 浏览次数:20740 次
#include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #define portnumber 3333 void main() { struct sockaddr_in serve_sock ; struct sockaddr_in client_sock; int sockfd; int new_sockfd; char *s; if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1) { printf("creat sock fail !\n"); exit(1); } /*填写 sockaddr_in 的成员数据*/ bzero(&serve_sock,sizeof(struct sockaddr_in)); /*清 0 */ serve_sock.sin_family = AF_INET; /*设置协议为 IPV4*/ serve_sock.sin_port = htons(portnumber); /*设置端口号为 3333*/ serve_sock.sin_addr.s_addr = htonl(INADDR_ANY); /*设置IP为任意IP地址*/ if(bind(sockfd,(struct sockaddr *)(&serve_sock),sizeof(struct sockaddr)) == -1) /*绑定*/ { printf("bind sock fail!\n"); exit(1); } if(listen(sockfd,5) == -1) /*设置最大连接数为5*/ { printf("listen sock fail!\n"); exit(1); } while(1) { if((new_sockfd = accept(sockfd,(struct sockaddr *)(&client_sock),sizeof(struct sockaddr_in))) == -1) /*堵塞,等待连接请求*/ { printf("accept fail!\n"); exit(1); } printf("connect from the client process successfully!\n"); read(new_sockfd,s,1024); /*读取客户端程序发送来的字符串*/ printf("read the string %s\n",s); /*将字符串打印出来*/ close(sockfd); /*关闭本次连接*/ } }
#include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #define portnumber 3333 void main(int argc,char *argv[]) { struct sockaddr_in client_sock; struct hostent *host; int fd; char *s; if((host=gethostbyname(argv[1]))==NULL) /*通过命令行参数传进来的ip地址获取 hostent 变量*/ { fprintf(stderr,"Gethostname error\n"); exit(1); } if(fd = socket(AF_INET,SOCK_STREAM,0) == -1) { printf("creat socket fail!\n"); exit(1); } bzero(&client_sock,sizeof(client_sock)); /*填写各所需参数*/ client_sock.sin_family = AF_INET; client_sock.sin_port = htons(portnumber); client_sock.sin_addr=*((struct in_addr *)host->h_addr); /*设置远程 IP ,通过 hostent 变量获得 h->addr*/ if(connect(fd,(struct sockaddr *)(&client_sock),sizeof(struct sockaddr)) == -1) /*连接请求*/ { printf("connet fail!\n"); /***执行失败了,我执行的时候打印出 connet fail!,我不解为什么连接失败啊,反复查了好几遍了还是没有看出来***/ exit(1); } printf("connet from the serve successfully!\n"); printf("please inpu :"); scanf("%s",s); close(fd); }