上海妇科疾病研究所 上海女性不孕医院 上海引产医院 无痛引产痛不痛 上海人流医院 白癜风治疗医院 上海小儿脑瘫医院 上海女子医院
基于balckfin架构下的socket通信-客户端程序设计-Blackfin-技术中心-国内专业ADI仿真器,Blackfin开发板,DSP芯片,软件算法,解决方案提供商-北京四维卓信电子有限公司
用户名: 密码:
主页 设为首页 加入收藏
      产品中心       技术中心       下载中心        社区新闻        诚聘英才       大学计划        关于我们       技术论坛
  您的当前位置:ADSP开源社区 >> 技术中心 >> Blackfin 今天是:
技术中心  
SigmaDSP
SHARC
A2B音频总线
Blackfin
ADI操作系统
ADSP-218X
TigerSAHRC
ADI DSP仿真器
产品导航
ADI DSP仿真器
SigmaDSP开发板
ADI A2B总线开发板
SHARC DSP开发板
销售网络
Blackfin  
基于balckfin架构下的socket通信-客户端程序设计
[ 作者: ] [ 来源:ADSP开源社区 ] [ 发布时间:2011-11-22 ]

客户端程序新鲜出炉了........主要采用了OTIPIA提供的通信类完成的设计,我基本上没有参与,几个同学写出来的,很不错,鼓个掌!!!!

Qtopia提供了四个与套接字相关的类,分别说明如下:

a)QServerSocket类。它是基于TCP的服务器类,可以让它在指定端口上进行监听。它的API使用十分方便,调用构造函数,实现newConnection()成员函数来建立新连接即可。

b)QSocket类。它是具有缓冲的TCP连接类。

C)QSocketDevice类。它是独立于平台的低级别Socket—API类。

d)QSocketNotifier类。它是socket回调支持类,利用它可以在Qtopia中编写异步socket通信程序。一旦打开一个非阻塞式socket(如TCP、UDP等)或其他操作系统支持的协议族,就可以创建一QSoeketNotifier对象来监测套接字。当发生套接字事件时,将QSocketNotifier发出的activated()信号与希望被调用的槽连接。

客户端主要的代码如下:

(1)窗体函数

 

#include "win.h"

#include <qvariant.h>

#include <qlabel.h>

#include <qlayout.h>

#include <qtooltip.h>

#include <qwhatsthis.h>

char m_str[256];

 

/*

 *  Constructs a Form1 as a child of 'parent', with the

 *  name 'name' and widget flags set to 'f'.

 *

 *  The dialog will by default be modeless, unless you set 'modal' to

 *  TRUE to construct a modal dialog.

 */

Form1::Form1( QWidget* parent, const char* name, WFlags fl )

    : QWidget( parent, name, fl )

 

{

    if ( !name )

       setName( "Form1" );

 

    textLabel1 = new QLabel( this, "textLabel1" );

    textLabel1->setGeometry( QRect( 60, 60, 380, 50 ) );

    languageChange();

    resize( QSize(497, 314).expandedTo(minimumSizeHint()) );

 

 

       timer_thread=new QTimer(this);

       connect(timer_thread,SIGNAL(timeout()),SLOT(initthread()));

       timer_thread->start(500,true);

 

 

       timer=new QTimer(this);

       connect(timer,SIGNAL(timeout()),SLOT(ontimer()));

       timer->start(500,false);

 

 

}

 

/*

 *  Destroys the object and frees any allocated resources

 */

Form1::~Form1()

{

    // no need to delete child widgets, Qt does it all for us

}

 

/*

 *  Sets the strings of the subwidgets using the current

 *  language.

 */

void Form1::languageChange()

{

    setCaption( tr( "Form1" ) );

    textLabel1->setText( tr( "textLabel1" ) );

}

 

void Form1::ontimer()

{

//     while(1)

//     {

                 printf("\n Now in function ontimer.\n");

                 textLabel1->setText( tr(m_str) );

//     }

}

 

void * thread1(void * para)

{

 

       int sockfd, numbytes; 

    char buf[MAXDATASIZE];

    struct hostent *he;

    struct sockaddr_in their_addr; // connector's address information

 

       printf("\n Now in function thread1.\n");

 

    if ((he=gethostbyname("192.168.1.196")) == NULL) {  // get the host info

        perror("gethostbyname");

        exit(1);

    }

 

    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {

        perror("socket");

        exit(1);

    }

 

    their_addr.sin_family = AF_INET;    // host byte order

    their_addr.sin_port = htons(PORT);  // short, network byte order

    their_addr.sin_addr = *((struct in_addr *)he->h_addr);

    memset(&(their_addr.sin_zero), '\0', 8);  // zero the rest of the struct

 

    if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) {

        perror("connect");

        exit(1);

    }

    while (1)

    {    memset(buf,0,sizeof(buf));

    if ((numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1)

    {

        perror("recv");

        exit(1);

    }

 

 

    if (numbytes>0) {

    buf[numbytes] = '\0';

    printf("Received: %s\n",buf);

 

       sprintf(m_str,"%s",buf);

 

       }

    else

       break;

    }

    close(sockfd);

 

}

void Form1::initthread()

{

    pthread_t th_a;

       pthread_create(&th_a,NULL,thread1,NULL);

}

基本完成了,晚上把主函数写出来就算是大功告成了,发现了几个做工程好苗子,能吃苦,能钻研,是老师们最喜欢的!!

联系我们 | 关于我们 | 免责声明 | 诚征英才 | 友情链接
Copyright 2019 All rights reserved  本网页版权属Open ADSP所有
北京海淀区中关村大街32号新中发市场3659 邮编100100
电话 18611096839 
粤ICP备14035876号-1