• 7921阅读
  • 1回复

在QT中使用QSocketDevice的问题,请大家帮忙! [复制链接]

上一主题 下一主题
离线lazy
 
只看楼主 倒序阅读 楼主  发表于: 2006-09-11
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
#include <qsocketdevice.h>
#include <qhostaddress.h>
#include <qstring.h>
main()
{
  int socket;
  char data[500];
  int len;
  //client[5];
  QSocketDevice *server;
  QSocketDevice *client;
  QHostAddress myaddress;
  myaddress.setAddress("192.168.1.88");
  int port=1234;
  server=new QSocketDevice(QSocketDevice::Stream);
  if(!server->bind(myaddress,port))
  {
  printf("bind error\n");
  server->~QSocketDevice();
  }
  if(!server->listen(5))
  {
  printf("listen error\n");
  server->~QSocketDevice();
  }
  while(1)
  {
  //server->waitForMore ( -1, 0 );
  socket=server->accept();
  printf("socket:%d\n",socket);
  printf("new connection\n");
    client=new QSocketDevice(socket,QSocketDevice::Stream);
    int a=client->socket();
    printf("a:%d\n",a);
  len=client->readBlock ( data, 500 );
  data[len]='\0';
  printf("data:%s\n",data);
  }
}
该程序只能接收到一个新的连接后才能接收一次数据,但是我想实现如下的功能:如果是新的连接则接受连接,如果是已经建立过的连接则直接收发数据,问题是我这段代码以后要在一个辅助线程中实现,所以我不能用QSocketNotifier类进行侦听,那么我应该怎么实现呢?
[ 此贴被XChinux在2006-09-11 20:54重新编辑 ]
离线leaway

只看该作者 1楼 发表于: 2007-01-21
QSocketDevice 是THREAD-SAFE的,所以accept一个连接,就new一个线程出来处理就可以了,实现继承QThread。
快速回复
限100 字节
 
上一个 下一个