主题 : 2个mini2440开发板如何实现网络通讯(简单有效)? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 17800
精华: 0
发帖: 1
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2010-04-01
最后登录: 2010-04-27
楼主  发表于: 2010-04-20 09:12

 2个mini2440开发板如何实现网络通讯(简单有效)?

求高手指点
级别: 新手上路
UID: 4216
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
贡献值: 0 点
综合积分: 16 分
注册时间: 2009-03-04
最后登录: 2012-04-12
1楼  发表于: 2010-04-23 10:18
先将Client端的板子IP地址修改为:192.168.1.231,同时修改下MAC地址。
Server端的板子IP地址修改为:192.168.1.230,不用修改MAC地址。

#define SERVER                  1
#define CLIENT                    0

/*globle variables*/
int sockfd,socklen;
struct sockaddr_in peeraddr,localaddr;

void net_init(char mode)
{
  int n;
  short port;
  char *local,*peer;

  sockfd=socket(AF_INET, SOCK_DGRAM, 0);
  if(sockfd<0){
        printf("socket creating err in udptalk\n");
        exit(1);
    }
  socklen = sizeof(struct sockaddr_in);

  if (mode==CLIENT) {
      local="192.168.1.231";
      peer="192.168.1.230";
  }
  else{
      local="192.168.1.230";
      peer="192.168.1.231";
  }
  
port=1000;


    memset(&peeraddr, 0, socklen);
    peeraddr.sin_family=AF_INET;
    peeraddr.sin_port=htons(port);
    if(inet_pton(AF_INET, peer, &peeraddr.sin_addr)<=0){
        printf("Wrong dest IP address!\n");
        exit(0);
    }
    memset(&localaddr, 0, socklen);
    localaddr.sin_family=AF_INET;
    if(inet_pton(AF_INET, local, &localaddr.sin_addr)<=0){
        printf("Wrong source IP address!\n");
        exit(0);
    }
    localaddr.sin_port=htons(port);
    if(bind(sockfd, (struct sockaddr *)&localaddr, socklen)<0){    
        printf("bind local address err in udptalk!\n");
        exit(2);
    }

}

在Client端的板子上的main函数里面执行:net_init(CLIENT);
在Servert端的板子上的main函数里面执行:net_init(SERVER);
这样两个板子就可以通过recvfrom函数和sendto函数进行通信了。
级别: 新手上路
UID: 4216
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
贡献值: 0 点
综合积分: 16 分
注册时间: 2009-03-04
最后登录: 2012-04-12
2楼  发表于: 2010-04-23 10:19
这个是UDP方式的