有没有windows下c语言实现udp协议的代码

qinuxman 发布于 2012/12/27 21:02
阅读 1K+
收藏 0

或者linux下这个怎么移植

udpserv.c  
#include <sys/socket.h>
  #include <unistd.h>
  #include <string.h>
  #include <stdio.h>
  #include <arpa/inet.h>
  #include <stdlib.h>
  #define MAXLINE 80
  #define SERV_PORT 8888
  void do_echo(int sockfd,struct sockaddr *pcliaddr,socklen_t clilen)
  {
  int n;
  socklen_t len;
  char mesg[MAXLINE];
  for(;;)
  {
  len = clilen;
  /* waiting for receive data */
  n = recvfrom(sockfd,mesg,MAXLINE,0,pcliaddr,&len);
  /* sent data back to client */
  sendto(sockfd,mesg,n,0,pcliaddr,len);
  }
  }
  int main(void)
  {
  int sockfd;
  struct sockaddr_in servaddr,cliaddr;
  sockfd = socket(AF_INET,SOCK_DGRAM,0); /* create a socket */
  /* init servaddr */
  bzero(&servaddr,sizeof(servaddr));
  servaddr.sin_family = AF_INET;
  servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
  servaddr.sin_port = htons(SERV_PORT);
  /* bind address and port to socket */
  if(bind(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr)) == -1)
  {
  perror("bind error");
  exit(1);
  }
  do_echo(sockfd,(struct sockaddr *)&cliaddr,sizeof(cliaddr));
  return 0;
  }

udpclient.c
#include <sys/socket.h>
  #include <unistd.h>
  #include <string.h>
  #include <stdio.h>
  #include <arpa/inet.h>
  #include <stdlib.h>
  #define MAXLINE 80
  #define SERV_PORT 8888
  void do_cli(FILE *fp,int sockfd,struct sockaddr *pservaddr,socklen_t servlen)
  {
  int n;
  char sendline[MAXLINE],recvline[MAXLINE + 1];
  /* connect to server */
  if(connect(sockfd,(struct sockaddr *)pservaddr,servlen) == -1)
  {
  perror("connect error");
  exit(1);
  }
  while(fgets(sendline,MAXLINE,fp) != NULL)
  {
  /* read a line and send to server */
  write(sockfd,sendline,strlen(sendline));
  /* receive data from server */
  n = read(sockfd,recvline,MAXLINE);
  if(n == -1)
  {
  perror("read error");
  exit(1);
  }
  recvline[n] = 0; /* terminate string */
  fputs(recvline,stdout);
  }
  }
  int main(int argc,char **argv)
  {
  int sockfd;
  struct sockaddr_in srvaddr;
  /* check args */
  if(argc != 2)
  {
  printf("usage: udpclient \n");
  exit(1);
  }
  /* init servaddr */
  bzero(&servaddr,sizeof(servaddr));
  servaddr.sin_family = AF_INET;
  servaddr.sin_port = htons(SERV_PORT);
  if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr) <= 0)
  {
  printf("[%s] is not a valid IPaddress\n",argv[1]);
  exit(1);
  }
  sockfd = socket(AF_INET,SOCK_DGRAM,0);
  do_cli(stdin,sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
  return 0;
  }

加载中
0
Monkey
Monkey
有请哪位跨平台语言大师来给你讲解一下。
0
小熊猫大暴走
小熊猫大暴走
实现udp和基于udp的代码完全是两码事
Lunar_Lin
Lunar_Lin
回复 @怪兽狂殴奥特曼 : 兄弟, 你真是个悲剧. 哈哈. 赶紧忙自己事情吧. 记得很多人说过的 少逛论坛. OSC是个好地方, 你要做的是: 不登录.
qinuxman
qinuxman
垃圾个p啊,我什么时候说基于udp的代码了,脑残吧
小熊猫大暴走
小熊猫大暴走
回复 @qinuxman : 那你就把你的垃圾标题改一改
qinuxman
qinuxman
废话,谁问你这个了
返回顶部
顶部