首页 > 代码库 > Linux_C socket clinet.c
Linux_C socket clinet.c
1 /* timeclnt.c - a client for timeserv.c 2 * usage: timeclnt hostname portnumber 3 */ 4 #include <stdio.h> 5 #include <sys/types.h> 6 #include <sys/socket.h> 7 #include <netinet/in.h> 8 #include <netdb.h> 9 10 #define oops(msg) {perror(msg); exit(1); }11 #define oopsn(msg, x) {perror(msg); exit(x);};12 int main(int argc, char* argv[]) {13 struct sockaddr_in servadd; 14 struct hostent *hp;15 int sock_id, sock_fd;16 char message[BUFSIZ];17 int messlen;18 int connect_num;19 /*** Step 1: Get a socket ***/20 sock_id=socket(PF_INET, SOCK_STREAM, 0);21 if(sock_id==-1)22 oops("socket");23 /*** Step 2: connect to server need to build address (host, port)of server first ***/24 bzero((void*)&servadd, sizeof(servadd));25 hp=gethostbyname(argv[1]);26 if(hp==NULL)27 oops(argv[1]);28 29 bcopy(hp->h_addr, (struct sockaddr*)&servadd.sin_addr, hp->h_length);30 servadd.sin_port=htons(atoi(argv[2]));/**这里记住一定要atoi转换,不然connect不起**/31 servadd.sin_family=AF_INET;32 33 if((connect_num=connect(sock_id, (struct sockaddr*)&servadd, sizeof(servadd)))!=0)34 { 35 printf("connect fail is %d.",connect_num);36 oopsn("connnnnect!!!!!", connect_num);37 }38 39 /*** Step 3: transfer data from server , then hangup ***/40 messlen=read(sock_id, message, BUFSIZ);41 if(messlen == 1)42 oops("read");43 if(write(1, message, messlen)!= messlen)44 oops("write");45 close(sock_id);46 return 0;47 }
gcc timeclnt.c -o timeclnt
./timeclnt 主机名 portnum
Linux_C socket clinet.c
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。