Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7563485
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: C/C++

2010-12-13 13:53:40

 

#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>

#include <arpa/inet.h>

 

#define SERVER_PORT 8888

#define MAX_MSG_SIZE 1024

 

void udps_respon(int sockfd)

{

       struct sockaddr_in addr;

       int addrlen,n;

       char msg[MAX_MSG_SIZE];

 

       while(1)

       { /* 从网络上读,并写到网络上 */

              bzero(msg,sizeof(msg)); // 初始化,清零


              addrlen = sizeof(struct sockaddr);

              n=recvfrom(sockfd,msg,MAX_MSG_SIZE,0,(struct sockaddr*)&addr,&addrlen); // 从客户端接收消息


              msg[n]=0;//将收到的字符串尾端添加上字符串结束标志


              /* 显示服务端已经收到了信息 */

              fprintf(stdout,"Server have received %s",msg); // 显示消息


       }

}

 

int main(void)

{

       int sockfd;

       struct sockaddr_in addr;

 

       /* 服务器端开始建立socket描述符 */

       sockfd=socket(AF_INET,SOCK_DGRAM,0);

       if(sockfd<0)

       {

              fprintf(stderr,"Socket Error:%sn",strerror(errno));

              exit(1);

       }

 

       /* 服务器端填充 sockaddr结构 */

       bzero(&addr,sizeof(struct sockaddr_in));

       addr.sin_family=AF_INET;

       addr.sin_addr.s_addr=htonl(INADDR_ANY);

       addr.sin_port=htons(SERVER_PORT);

 

       /* 捆绑sockfd描述符 */

       if(bind(sockfd,(struct sockaddr *)&addr,sizeof(struct sockaddr_in))<0)

       {

              fprintf(stderr,"Bind Error:%sn",strerror(errno));

              exit(1);

       }

 

       udps_respon(sockfd); // 进行读写操作


       close(sockfd);

}

 

 

 

#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>

#include <arpa/inet.h>

 

#define SERVER_PORT 8888

#define MAX_BUF_SIZE 1024

 

void udpc_requ(int sockfd,const struct sockaddr_in *addr,int len)

{

       char buffer[MAX_BUF_SIZE];

       int n;

       while(1)

       { /* 从键盘读入,写到服务端 */

              printf("Please input char:n");

              fgets(buffer,MAX_BUF_SIZE,stdin);

              sendto(sockfd,buffer,strlen(buffer),0,(struct sockaddr *)addr,len);

              bzero(buffer,MAX_BUF_SIZE);

       }

}

 

int main(int argc,char **argv)

{

       int sockfd;

       struct sockaddr_in addr;

 

       if(argc!=2)

       {

              fprintf(stderr,"Usage:%s server_ipn",argv[0]);

              exit(1);

       }

 

       /* 建立 sockfd描述符 */

       sockfd=socket(AF_INET,SOCK_DGRAM,0);

       if(sockfd<0)

       {

              fprintf(stderr,"Socket Error:%sn",strerror(errno));

              exit(1);

       }

 

       /* 填充服务端的资料 */

       bzero(&addr,sizeof(struct sockaddr_in));

       addr.sin_family=AF_INET;

       addr.sin_port=htons(SERVER_PORT);

       if(inet_aton(argv[1],&addr.sin_addr)<0) /*inet_aton函数用于把字符串型的IP地址转化成网络2进制数字*/

       {

              fprintf(stderr,"Ip error:%sn",strerror(errno));

              exit(1);

       }

 

       udpc_requ(sockfd,&addr,sizeof(struct sockaddr_in)); // 进行读写操作


       close(sockfd);

}

 


阅读(1629) | 评论(0) | 转发(2) |
0

上一篇:嵌入式与物联网(专家看法)

下一篇:LED

给主人留下些什么吧!~~