〖Linux〗Qt+gsoap开发客户端程序,服务端地址设定的字符串转换处理
2013-12-21 13:31
706 查看
之所以写出来,是由于经常因为这个问题屡屡丢面子..
一般情况下,QString转换成(char*),我们一般直接使用:
char *str = qstr->text().toLatin1().data();
当然这也本身就一点问题也没有,假如得到的str为"123",那么str就点4个字符的空间,最后一个字符是'\0';
可就是这么一个'\0',在设定gsoap的server的时候,它并不需要,被坑了好几回了,..
出错的信息大概都是这样子的:
或者是这样子的出错信息:
解决方法其实很容易的,就把最后一个字符'\0'去掉了就好了,我是这么写的:
解析,假如custserver为"127.0.0.1:4567",使用strlen(custserver)得到的长度是14,而实际custserver占用的空间为15;
那么,再定义一个char *custservertmp,分配空间为14,使用strncpy,把custserver前边的14个字符复制给custservertmp;
然后,设定好服务端的地址,gsoap+Qt客户端运行很OK。
一般情况下,QString转换成(char*),我们一般直接使用:
char *str = qstr->text().toLatin1().data();
当然这也本身就一点问题也没有,假如得到的str为"123",那么str就点4个字符的空间,最后一个字符是'\0';
可就是这么一个'\0',在设定gsoap的server的时候,它并不需要,被坑了好几回了,..
出错的信息大概都是这样子的:
Starting /media/Study/Workspace/Qt/build-zigbeeClient-Desktop-Release/zigbeeClient... <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://localhost:8888"><SOAP-ENV:Body><ns:temp SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><subdev>49</subdev></ns:temp></SOAP-ENV:Body></SOAP-ENV:Envelope> 接着,程序就死在这里..
或者是这样子的出错信息:
SOAP 1.2 fault: SOAP-ENV:Sender[no subcode] "Host not found" Detail: get host by name failed in tcp_connect()
解决方法其实很容易的,就把最后一个字符'\0'去掉了就好了,我是这么写的:
char *custserver = ui->serverlineEdit->text().toLatin1().data(); char *custservertmp = (char *)malloc(strlen(custserver)); //to avoid the end of '\0' strncpy(custservertmp,custserver,strlen(custserver)); //to avoid the end of '\0'
解析,假如custserver为"127.0.0.1:4567",使用strlen(custserver)得到的长度是14,而实际custserver占用的空间为15;
那么,再定义一个char *custservertmp,分配空间为14,使用strncpy,把custserver前边的14个字符复制给custservertmp;
然后,设定好服务端的地址,gsoap+Qt客户端运行很OK。
相关文章推荐
- Linux下用gSOAP开发Web Service服务端和客户端程序(一)
- Linux平台下基于C语言使用gSOAP开发Web Service服务端和客户端程序
- Linux下用gSOAP开发Web Service服务端和客户端程序
- Linux下用gSOAP开发Web Service服务端和客户端程序(一)
- Linux平台下基于C++语言使用gSOAP开发Web Service服务端和客户端程序
- Linux平台下基于C++语言使用gSOAP开发Web Service服务端和客户端程序
- Linux下用gSOAP开发Web Service服务端和客户端程序(一)
- Linux下用gSOAP开发Web Service服务端和客户端程序(二)
- 〖Linux〗Qt5.2.0+gsoap开发Android的NDK程序遇到错误的解决
- 使用CXF开发WebService程序的总结(五):基于Map数据类型处理的的客户端和服务端代码的编写
- linux中UDP程序流程、客户端、服务端
- socket客户端与服务端代码(解决16进制输入流转换字符串操作)
- 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决
- ONVIF协议网络摄像机(IPC)客户端程序开发(6):使用gSOAP生成ONVIF框架代码
- Linux下一系列基于Java的客户端程序的中文乱码问题的处理方法
- 8.在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
- 随手写了一个linux服务端与window客户端的epoll程序,当做练习把。
- linux 下安装redis并用QT写客户端程序进行连接
- 关于Linux4412开发平台上Qt程序的反色问题
- linux下QT程序与windows程序中文字符串传输编码问题的一点解决,utf8转gbk