• 5616阅读
  • 4回复

TCP服务器和客户端全代码 [复制链接]

上一主题 下一主题
离线soeasy
 

只看楼主 倒序阅读 楼主  发表于: 2013-05-01
http://download.csdn.net/detail/ochuncui1/5319421

TCP服务器和客户端全代码。  本来是想用结构体传输数据的。 一直没成功 。
离线ppdayz

只看该作者 1楼 发表于: 2013-05-01
回 楼主(za6234567) 的帖子
结构体传数据不难的,结构体构建好了直接强转成char *,然后用qint64 QAbstractSocket::writeData(const char * data, qint64 size) [virtual protected]就可以了,对端接收之后再转回来就可以了,注意大小端和字节对齐问题。
离线soeasy

只看该作者 2楼 发表于: 2013-05-01
回 1楼(ppdayz) 的帖子
可是拿不到结构体大小啊 ,
离线ppdayz

只看该作者 3楼 发表于: 2013-05-01
回 2楼(za6234567) 的帖子

结构体大小sizeof()啊,如果是这样的结构体
{
  int a;
  int b;
  unsigned char  name []
}_ab;
的这种,就是sizeof(_ab)+[]的长度,你自己传多少数据自己肯定知道的。
而且一般来说,要定义一个包头,包头中要指定包的数据大小,然后传送的总大小就是包头大小+数据大小
比如说定义个结构体:
  1. struct _package
  2. {
  3. unsigned int xxx;
  4. unsigned int data_len;
  5. unsigned char data[];
  6. };
  7. typedef struct _package PACKAGE;

然后用memcpy把数据和包头拼在一起,发掉句可以了。数据长度就是data_len+包头的长度;

只看该作者 4楼 发表于: 2013-05-04
楼主你好,请教下问题。
服务器端如何获取已经连接的客户端的主机信息。又如何对这些信息进行管理呢?
当我client1想对client2发消息时,server是如何知道这些信息的?
快速回复
限100 字节
 
上一个 下一个