TCP协议网络编程实例.doc

上传人:scccc 文档编号:12711112 上传时间:2021-12-05 格式:DOC 页数:7 大小:22KB
返回 下载 相关 举报
TCP协议网络编程实例.doc_第1页
第1页 / 共7页
TCP协议网络编程实例.doc_第2页
第2页 / 共7页
TCP协议网络编程实例.doc_第3页
第3页 / 共7页
TCP协议网络编程实例.doc_第4页
第4页 / 共7页
TCP协议网络编程实例.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《TCP协议网络编程实例.doc》由会员分享,可在线阅读,更多相关《TCP协议网络编程实例.doc(7页珍藏版)》请在三一文库上搜索。

1、服务器端程序CODE:  Copy to clipboard-/* 服务器程序  (server.c) */#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <netdb.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/types.h>#in

2、clude <arpa/inet.h>int main(int argc, char *argv)        int sockfd,new_fd;        struct sockaddr_in server_addr;        struct sockaddr_in client_addr;      

3、  int sin_size,portnumber;        char hello="Hello! Are You Fine?n"        if(argc!=2)                      &

4、#160; fprintf(stderr,"Usage:%s portnumberan",argv0);                exit(1);                if(portnumber=atoi(argv1)<0)   

5、0;                    fprintf(stderr,"Usage:%s portnumberan",argv0);                exit(1);     

6、60;          /* 服务器端开始建立socket描述符 */        if(sockfd=socket(AF_INET,SOCK_STREAM,0)=-1)                        

7、0; fprintf(stderr,"Socket error:%sna",strerror(errno);                exit(1);                /* 服务器端填充 sockaddr结构  */    

8、60;    bzero(&server_addr,sizeof(struct sockaddr_in);        server_addr.sin_family=AF_INET;        server_addr.sin_addr.s_addr=htonl(INADDR_ANY);        server_addr.sin_port=h

9、tons(portnumber);推荐精选        /* 捆绑sockfd描述符  */         if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr)=-1)               

10、0;        fprintf(stderr,"Bind error:%sna",strerror(errno);                exit(1);                /* 监听sockfd

11、描述符  */        if(listen(sockfd,5)=-1)                        fprintf(stderr,"Listen error:%sna",strerror(errno);    

12、60;           exit(1);                while(1)                       

13、/* 服务器阻塞,直到客户程序建立连接  */                sin_size=sizeof(struct sockaddr_in);                if(new_fd=accept(sockfd,(struct sockaddr *)(&clien

14、t_addr),&sin_size)=-1)                                        fprintf(stderr,"Accept error:%sna"

15、,strerror(errno);                        exit(1);                       

16、60;        fprintf(stderr,"Server get connection from %sn",                inet_ntoa(client_addr.sin_addr);            &

17、#160;   if(write(new_fd,hello,strlen(hello)=-1)                                        fprintf(stder

18、r,"Write Error:%sn",strerror(errno);                        exit(1);                  

19、0;             /* 这个通讯已经结束     */                close(new_fd);             

20、0;  /* 循环下一个     */                  close(sockfd);        exit(0);客户端程序推荐精选CODE:  Copy to clipboard-/* 客户端程序  client.c */* 客户端程序  client.c */#include

21、 <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <netdb.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/types.h>#include <arpa/inet.h>int main(int argc, char *argv)   

22、;     int sockfd;        char buffer1024;        struct sockaddr_in server_addr;        struct hostent *host;        int portnumber,nbytes;&

23、#160;       if(argc!=3)                        fprintf(stderr,"Usage:%s hostname portnumberan",argv0);        

24、        exit(1);                if(host=gethostbyname(argv1)=NULL)                      &#

25、160; fprintf(stderr,"Gethostname errorn");                exit(1);                if(portnumber=atoi(argv2)<0)     &#

26、160;                  fprintf(stderr,"Usage:%s hostname portnumberan",argv0);                exit(1);     

27、0;          /* 客户程序开始建立 sockfd描述符  */        if(sockfd=socket(AF_INET,SOCK_STREAM,0)=-1)                       

28、; fprintf(stderr,"Socket Error:%san",strerror(errno);                exit(1);        推荐精选        /* 客户程序填充服务端的资料     

29、60; */        bzero(&server_addr,sizeof(server_addr);        server_addr.sin_family=AF_INET;        server_addr.sin_port=htons(portnumber);        server_ad

30、dr.sin_addr=*(struct in_addr *)host->h_addr);        /* 客户程序发起连接请求         */         if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr)=-1)   

31、                     fprintf(stderr,"Connect Error:%san",strerror(errno);                exit(1);    

32、;            /* 连接成功了           */        if(nbytes=read(sockfd,buffer,1024)=-1)               

33、         fprintf(stderr,"Read Error:%sn",strerror(errno);                exit(1);                buffernb

34、ytes='0'        printf("I have received:%sn",buffer);        /* 结束通讯     */        close(sockfd);        exit(0);MakeFile这

35、里我们使用GNU 的make实用程序来编译. 关于make的详细说明见 Make 使用介绍CODE:  Copy to clipboard #  Makefile       #all:server clientserver:server.c        gcc $ -o $client:client.c        gcc $ -o $运行make后会产生两个程序serv

36、er(服务器端)和client(客户端) 先运行./server portnumber&          (portnumber随便取一个大于1204且不在/etc/services中出现的号码 就用8888好了),        然后运行  ./client localhost 8888 看看有什么结果. (你也可以用telnet和netstat试一试.)   (注:可编辑下载,若有不当之处,请指正,谢谢!) 推荐精选

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1