udp

服务器:udpsrv.c

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netinet/ip.h>
#include<strings.h>
#include<string.h>
#include<arpa/inet.h>

int main(int argc, char **argv)
{
 int sockfd;
 socklen_t addrlen;
 sockfd = socket(AF_INET, SOCK_DGRAM, 0);

 struct sockaddr_in my_addr, cli_addr;
 bzero(&my_addr, sizeof my_addr);
 my_addr.sin_family = AF_INET;
 my_addr.sin_port = htons(atoi(argv[1]));
 my_addr.sin_addr.s_addr = htonl(INADDR_ANY);

 bind(sockfd, (struct sockaddr *)&my_addr, sizeof(my_addr));
 
 char buf[80];
 while(1){
  bzero(buf, 80);
  addrlen = sizeof(cli_addr);
  recvfrom(sockfd, buf, 79, 0,
    (struct sockaddr *)&cli_addr, &addrlen);
  fputs(buf, stdout);
  sendto(sockfd, buf, strlen(buf), 0,
    (struct sockaddr *)&cli_addr, addrlen);
 }
 close(sockfd);
 return 0;
}

 

客服端:udpcli.c

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netinet/ip.h>
#include<strings.h>
#include<string.h>
#include<arpa/inet.h>

int main(int argc, char **argv)
{
 int sockfd;
 sockfd = socket(AF_INET, SOCK_DGRAM, 0);

 struct sockaddr_in my_addr;
 bzero(&my_addr, sizeof my_addr);
 my_addr.sin_family = AF_INET;
 my_addr.sin_port = htons(atoi(argv[2]));
 my_addr.sin_addr.s_addr = inet_addr(argv[1]);

 char buf[80];
 socklen_t addrlen;
 addrlen = sizeof(my_addr);
 while(1){
  bzero(buf, 80);
  printf("pls input: ");
  fgets(buf, 80, stdin);
  sendto(sockfd, buf, strlen(buf), 0,
    (struct sockaddr *)&my_addr, sizeof(my_addr));
  bzero(buf,80);
  recvfrom(sockfd, buf, 79, 0,
    (struct sockaddr *)&my_addr, &addrlen);
  printf("buf: %s\n", buf);
 }
 close(sockfd);
 return 0;
}

posted on 2012-04-11 17:58  小风儿_xf  阅读(100)  评论(0编辑  收藏  举报

导航