C语言实现UDP连接的参考代码
2013-02-23 15:13
369 查看
C语言实现UDP连接的参考代码,Client连接上Server后将自己所在目录下的"liu"文件中的前三行文字发送到Server端去,然后Server负责接收和显示。
运行截图:
Server端:
Client端:
(————完————)
/**************server.c**************/ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<netdb.h> #include<errno.h> #include<sys/types.h> int port=8888; int main(){ int sockfd; int len; int z; char buf[256]; struct sockaddr_in adr_inet; struct sockaddr_in adr_clnt; printf("waiting for client...\n"); adr_inet.sin_family=AF_INET; adr_inet.sin_port=htons(port); adr_inet.sin_addr.s_addr=htonl(INADDR_ANY); bzero(&(adr_inet.sin_zero),8); len=sizeof(adr_clnt); sockfd=socket(AF_INET,SOCK_DGRAM,0); if(sockfd==-1){ perror("socket error_1"); exit(1); } z=bind(sockfd,(struct sockaddr *)&adr_inet,sizeof(adr_inet)); if(z==-1){ perror("bind error_1"); exit(1); } while(1){ z=recvfrom(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&adr_clnt,&len); if(z<0){ perror("recvfrom error_1"); exit(1); } buf[z]=0; printf("接收:%s",buf); if(strncmp(buf,"stop",4)==0){ printf("结束....\n"); break; } } close(sockfd); exit(0); }
/***************client.c***************/ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<netdb.h> #include<errno.h> #include<sys/types.h> int port=8888; int main(int argc,char *argv[]){ int sockfd; int i=0; int z; char buf[80],str1[80]; struct hostent *host; struct sockaddr_in adr_srvr; if(argc<2){ fprintf(stderr,"please enter the server's hostname!\n"); exit(1); } if((host=gethostbyname(argv[1]))==NULL){ herror("gethostbyname error!"); exit(1); } FILE *fp; printf("open file....\n"); fp=fopen("liu","r"); if(fp==NULL){ perror("failed to open file"); exit(1); } printf("connecting server....\n"); adr_srvr.sin_family=AF_INET; adr_srvr.sin_port=htons(port); adr_srvr.sin_addr=*((struct in_addr *)host->h_addr); bzero(&(adr_srvr.sin_zero),8); sockfd=socket(AF_INET,SOCK_DGRAM,0); if(sockfd==-1){ perror("socket error!"); exit(1); } printf("send file ...\n"); for(i=0;i<3;i++){ fgets(str1,80,fp); printf("%d:%s",i,str1); sprintf(buf,"%d:%s",i,str1); z=sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&adr_srvr,sizeof(adr_srvr)); if(z<0){ perror("recvfrom error"); exit(1); } } printf("send ....\n"); sprintf(buf,"stop\n"); z=sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&adr_srvr,sizeof(adr_srvr)); if(z<0){ perror("sendto error"); exit(1); } fclose(fp); close(sockfd); exit(0); }
运行截图:
Server端:
Client端:
(————完————)
相关文章推荐
- 【转】PostgreSQL 数据库C语言代码实现【数据库连接,创建表, 以及增删改查】
- 【C语言】【unix c】编写代码实现基于UDP的网络通信
- php下连接ftp实现文件的上传、下载、删除文件实例代码
- 开源世界有许多优秀的开源项目,我选取其中十个最优秀的、最轻量级的C语言的项目,希望可以为C语言开发人员提供参考。 十个最值得阅读学习的C开源项目代码 1. Webbench 2. Tinyhttpd
- UDP内网穿透讲解及代码实现
- C语言 以数据块的形式读写文件详解及实现代码
- KMP的原理和代码实现(详细注释|参考多个博客总结|可作为模板)
- Asp.net 连接MySQL的实现代码[]
- ios蓝牙开发(二)ios连接外设的代码实现
- UDP简单实现代码
- 黑马程序员-----C语言学习之通讯录应用的代码实现
- jsp中上传大文件(200M已测试),存到数据库,易发生连接超时的ie找不到网页的错误,其解决方法。略写代码,参考(.net修改代码应该可以,改天修改)
- C语言 不使用strcat函数实现连接两个字符串功能
- IP/UDP校验和的C代码实现
- C语言学习趣事_19_C参考手册连接
- 6.S5PV210时钟初始化c语言实现代码
- C# 实现简单状态机(参考代码)
- 参考别人代码实现二叉树
- 数据结构 --静态队列的一个简单的C语言代码实现