首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++ socket接收数据出现段异常

2012-02-20 
c++ socket接收数据出现段错误大家好,我使用qt进行socket传递数据,当我传递的结构体含有指针时,在接收数据

c++ socket接收数据出现段错误
大家好,我使用qt进行socket传递数据,当我传递的结构体含有指针时,在接收数据时,出现段错误。代码如下:
//用户登录
struct stUserLogin{
  char *username;
  char *password;
};

typedef stUserLogin login; //用户登录
客户端发送数据socket代码:
void P2PUdpClient::userLogin(const QString &username, const QString &password)
{
  login *mylogin = (login *)malloc(sizeof(login));
  mylogin->username = username.toUtf8().data();
  mylogin->password = password.toUtf8().data();
  
  qDebug() << mylogin->username << mylogin->password;
  udpsocket->writeDatagram((const char *)mylogin,
sizeof(login),
server_host,
server_port);
}
服务器接收数据代码:
void P2PUdpServer::udpreceive()
{
  while(udpsocket->hasPendingDatagrams()){
  login *recvbuf = (login *)malloc(sizeof(login));
  QHostAddress remotehost;
  quint16 remoteport;

  qint64 iret = udpsocket->readDatagram((char *)recvbuf,
sizeof(login),
&remotehost,
&remoteport);
  if(iret < 0){
  return;
  }
  qDebug() << recvbuf->username << endl;
  qDebug() << recvbuf->password << endl;
  }
}

[解决办法]
struct stUserLogin{
char *username;
char *password;
};
结构定义问题,你结构里面的的指针没有空间存数据,当然下面把结构体指针传进接收数据就段错误了
试这个
struct stUserLogin{
char username[20];
char *password[20];
};
[解决办法]
正解。

探讨
struct stUserLogin{
char username[20];
char password[20];
};

热点排行