免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 704 | 回复: 0
打印 上一主题 下一主题

以太网测试 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-18 16:17 |只看该作者 |倒序浏览

以太网测试
先测试一下简单点的UDP通讯,做一个SERVER和一个CLIENT两个程序,SERVER程序在启动后会建立并绑定SOCKET,等待接收来自CLIENT的数据.CLIENT启动后会在建立SOCKET后,打开一个文本文件,并将读到的内容发到SERVER端。最后发送字符串STOP结束,终止SERVER和CLIENT之间的连接。
* udp_client.c*/
#include
#include
#include
#include
#include
#include
#include
int port = 8000;
int main()
{
  int  sockfd;
  int  i=0;
  int  z;
  char buf[80],strl[80];
  struct sockaddr_in  adr_srvr;
  FILE *fp;
  
  /*打开product.txt文本文件*/
  printf("打开文件...\n");
  fp = fopen("product.txt","r");
  if (fp == NULL)
  {
    perror("open file");
    exit(1);
  }
  
  /*建立server ipv4 地址*/
  printf("连接Server..\n");
  bzero(&adr_srvr,sizeof(adr_srvr));
  adr_srvr.sin_family = AF_INET;
  adr_srvr.sin_addr.s_addr = inet_addr("192.168.1.196");
  adr_srvr.sin_port = htons(port);
  
  /*建立Socket*/
  sockfd = socket(AF_INET, SOCK_DGRAM, 0);
  if (sockfd == -1 )
  {
    perror("socket error");
    exit(1);
  }
  
  /*连续读取product.txt 中的3笔数据给server*/
  printf("传送文件内容...");
  for(i=0;i
  {
    fgets(strl,80,fp);
    printf("第 %d 笔: %s\n",i,strl);
    sprintf(buf,"第 %d 笔: %s\n",i,strl);
    z = sendto(sockfd, buf, sizeof(buf), 0,
        (struct sockaddr *)&adr_srvr, sizeof(adr_srvr));
    if( z
    {
      perror("sendto error");
      exit(1);
    }
  }
  
  /*传送stop给server*/
  printf("传送结束字符串...");
  sprintf(buf,"stop\n");
    z = sendto(sockfd, buf, sizeof(buf), 0,
        (struct sockaddr *)&adr_srvr, sizeof(adr_srvr));
    if( z
    {
      perror("sendto error");
      exit(1);
    }
   
  fclose(fp);
  close(sockfd);
  printf("信息传送结束.\n");
  exit(0);
}
/* udp_server.c*/
#include
#include
#include
#include
#include
#include
#include
int port = 8000;
int main()
{
  int  sockfd;
  int  len;
  int  z;
  char buf[256];
  struct sockaddr_in  adr_inet;
  struct sockaddr_in  adr_clnt;
  
  printf("等待Clint 端传输...\n");
  
  /*建立server ipv4 地址*/
  bzero(&adr_inet,sizeof(adr_inet));
  adr_inet.sin_family = AF_INET;
  adr_inet.sin_addr.s_addr = inet_addr("192.168.1.196");
  adr_inet.sin_port = htons(port);
  
  len = sizeof(adr_clnt);
  
  /*建立Socket*/
  sockfd = socket(AF_INET, SOCK_DGRAM, 0);
  if (sockfd == -1 )
  {
    perror("socket error");
    exit(1);
  }
  
  /*绑定Socket*/
  z = bind(sockfd,(struct sockaddr *)&adr_inet,sizeof(adr_inet));
  if (z == -1 )
  {
    perror("bind error");
    exit(1);
  }
  
  while(1)
  {  
  /*接收CLIENT 端传来的信息*/
    z = recvfrom(sockfd, buf, sizeof(buf), 0,
        (struct sockaddr *)&adr_clnt, &len);
    if( z
    {
      perror("recvform error");
      exit(1);
    }
  
    buf[z]=0;
    /*将接收到的信息显示在显示器上*/  
    printf("接收数据:%s",buf);
  
    /*收到stop字符串则结束与client端的连接*/
    if(strncmp(buf, "stop", 4) == 0)
    {
       printf("结束连接.\n");
       break;
    }
  }
  close(sockfd);
  exit(0);
}
注意所读的文件要提前手工建好。
并且SERVER端程序用gcc直接编译,CLIENT要用arm-linu-gcc编译。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/68643/showart_1085494.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP