• 5485阅读
  • 6回复

[提问]各位,我做了一个QTcpServer类做了一个server和client [复制链接]

上一主题 下一主题
离线wangyan23888
 

只看楼主 倒序阅读 楼主  发表于: 2013-08-26
第一次做socket,做了一个tcpserver和tcpclient,现在server发的消息client可以接收到,但是不知道server是不是可以接收到client发出的消息呢?谢谢
离线ppdayz

只看该作者 1楼 发表于: 2013-08-27
可以的,把client的代码抄过去就可以了。
离线wangyan23888

只看该作者 2楼 发表于: 2013-08-27
回 1楼(ppdayz) 的帖子
嗯,实现了,谢谢
只看该作者 3楼 发表于: 2013-08-29
回 1楼(ppdayz) 的帖子
你知道要怎么才能实现图片发送吗?我是新手、
离线ppdayz

只看该作者 4楼 发表于: 2013-08-29
如果2端都是Qt的话就很简单,用QImage构建图片
比如说有a.png要发送
发送包的结构体可以是:
typedef  NETPACKET{
     int header; // 自定义的包头 //
     int format; // 图片的格式 //
     int datasize;   //图片数据的长度 //
     uchar imageData[];
}netpacket;

然后服务端:
QImage *img = new QImage("a.png");
然后
netpacket *pkt = (netpacket *)malloc(sizeof(netpacket) + img.byteCount());
pkt->header = your_defined_header;
pkt->format = img.format();
pkt->datasize = img.byteCount();
memcpy(pkt->imageData, img.bit(),  img.byteCount());
tcpsocket->write((chat *)pkt, sizeof(netpacket) + img.byteCount());
free(pkt);


一个含有图片数据的包就被发出去了。
客户端接收然后组成QImge显示就可以了。
上面的代码差不多就这个意思,也没有仔细去核对函数名字,看下帮助就好了



离线wangyan23888

只看该作者 5楼 发表于: 2013-09-27
回 1楼(ppdayz) 的帖子
m_tcpSocket->connectToHost("192.168.1.209",19999);
我client按上面的执行去连接209的server,怎么判断有没有连接成功呢?
如果连接成功,执行一部分,没有连接成功,执行另外一部分,谢谢
离线ppdayz

只看该作者 6楼 发表于: 2013-09-29
回 5楼(wangyan23888) 的帖子
void QAbstractSocket::stateChanged ( QAbstractSocket::SocketState socketState ) [signal]
connect(m_tcpSocket, SIGNAL(stateChanged( QAbstractSocket::SocketState), this, SLOT(xxxxxx( QAbstractSocket::SocketState)));

void xxxx:xxxxxx( QAbstractSocket::SocketState state)
{
     switch(state)
     ......

}
快速回复
限100 字节
 
上一个 下一个