您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术单片机在嵌入式Socket通信系统中的应用 正文
单片机在嵌入式Socket通信系统中的应用

单片机在嵌入式Socket通信系统中的应用

点击数:7326 次   录入时间:03-04 12:01:16   整理:http://www.55dianzi.com   嵌入式系统-技术
 
    客户端代码相对来说要简单一些,首先通过服务器域名获得其IP地址,然后创建一个socket,接着调用connect函数来与服务器建立连接,连接成功之后再接收从服务器发送过来的数据,最后在通信结束后关闭socket。

   




mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman

www.55dianzi.com '">综上所述,网络程序客户端和服务器端进行Socket通信的建立步骤如下
    服务器端:socket →bind →listen→accept
    客户端:socket →bind →connect
    本设计使用的套接字为流式套接字,下面是运行于32位微处理器S3C44B0X 嵌入式 开发平台的客户端应用程序:
 
  #include <netdb.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include
    <netinet/in.h>

    #include <arpa/inet.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <string.h>
    int main(int argc,char *argv[])
    {
    int s;
    char buffer[256];
    struct sockaddr_in addr;
    struct hostent *hp;
    struct in_addr in;
    struct sockaddr_in local_addr;
    if (argc < 2) return;
    if(!(hp=gethostbyname (argv[1]))){
    fprintf(stderr,"Can't resolve host.\n");
    exit (1);
    }
    if ((s = socket(AF_




INET,SOCK_STREAM,0)) <0){
    perror ("socket");
    exit (1);
    }
    bzero (&addr,sizeof (addr));
    addr.sin_family = AF_INET;
    addr.sin_port=htons((unsigned short)atoi(argv[2]));  
    hp = gethostbyname(argv[1]); 
    memcpy(&local_addr.sin_addr.s_addr,hp->h addr,4);
    in.s_addr = local_addr.sin_addr.s_addr;
    printf ("Domain Name%s\n"argv 
    printf ("IP address :%s\n",inet_ntoa (in));
    printf("%s,%s\n",hp->h_name,argv[2]);
    addr.sin_addr.s_addr=inet_addr(hp->h_name);
    ifconnect(s,(struct sockaddr *)&addr,sizeof (addr))<0){
    perror ("connect");
    exit (1);

www.55dianzi.com
     }
    recv (s,buffer,sizeof (buffer),0);
    printf ("%s\n",buffer);
    while(1); 
    bzero(buffer,sizeof (buffer));
    read (STDIN_FILENO,buffer,sizeof(buffer));
    if (send (s,buffer,sizeof (buffer),0)<0){
    perror ("send");
    exit (1);
    }
    }
    }

    4 结束语

    设计开发了基于S3C44B0X的以太网通信系统,并利用uClinux 操作系统 强大的网络功能实现了Socket通信。由于uClinux目前只支持flat格式的可执行文件,因此本设计是在先建立好uClinux开发环境的情况下,把用户自行开发的应用程序通过宿主PC机上的交叉编译器转化为flat格式,然后再通过FTP添加到目标硬件开发平台上运行的。文中的客户端应用程序已经在基于ARM7TDMI核的S3C44B0X处理器的 嵌入式 开发平台上成功运行,并成功地和宿主PC机的服务器端应用程序实现了Socket通信。当然,也可以把目标硬件开发平台当作服务器端,而把宿主PC机当作客户端来进行双向文件传输。

 



上一页  [1] [2] 


本文关键字:单片机  通信  嵌入式  Socket  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术