标题:在QT中使用QSocketDevice的问题,请大家帮忙!
作者:lazy
日期:2006-09-11 14:35
内容:
#include
#include
#include
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='\0';
printf("data:%s\n",data);
}
}
该程序只能接收到一个新的连接后才能接收一次数据,但是我想实现如下的功能:如果是新的连接则接受连接,如果是已经建立过的连接则直接收发数据,问题是我这段代码以后要在一个辅助线程中实现,所以我不能用QSocketNotifier类进行侦听,那么我应该怎么实现呢?
#1 [leaway 01-21 01:31]
QSocketDevice 是THREAD-SAFE的,所以accept一个连接,就new一个线程出来处理就可以了,实现继承QThread。