2 u011412588 u011412588 于 2016.03.23 16:58 提问

qt创建SOCKET编译报错

图片说明为什么用QT在windows下创建SOCKET套接字会报错,是不是编译器的问题啊,找来找去找不到问题啊。。。。。求大神相助,网络编程新手,还有就是我已经确定包含了WS2_32.lib

3个回答

tax10240809163com
tax10240809163com   2016.03.23 17:30
已采纳

QString hostip = "192.168.168.113";
qint16 port = 8000;
psocket = new QTcpSocket;
psocket->connectToHost( QHostAddress( hostip ), port );

u011412588
u011412588 什么意思
一年多之前 回复
qq423399099
qq423399099   Ds   Rxr 2016.03.24 11:14

将变量的申明放在一个函数块的头部,好像改成这样就好了

 int sock_send()
{
    WSADATA WSAdata;
    WORD ver;
    SOCKET st;
    struct sockaddr_in addr;
    WSAStartup(ver, &WSAdata);
    st = socket(AF_INET, SOCK_DGRAM, 0);
    memset(&addr, 0, sizeof(addr));
    addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    addr.sin_family = AF_INET;
    addr.sin_port = htons(8080);
    return 0;
}
qq423399099
qq423399099 哈哈,我今天也发生和LZ一样的错误了,改了下顺序就好了
一年多之前 回复
qq423399099
qq423399099   Ds   Rxr 2016.03.23 17:35

试了下楼主的代码,在我的电脑上是能跑的,楼主要不删了build-XXXX-XX-XX文件夹,重新生成一下试试

 #include <WinSock2.h>
int sock_send()
{
    WSADATA WSAdata;
    WORD ver;
    WSAStartup(ver, &WSAdata);
    SOCKET st = socket(AF_INET, SOCK_DGRAM, 0);
    struct sockaddr_in addr;
    memset(&addr, 0, sizeof(addr));
    addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    addr.sin_family = AF_INET;
    addr.sin_port = htons(8080);
    return 0;
}
qq423399099
qq423399099 回复Stock_: so sad
一年多之前 回复
u011412588
u011412588 本来想采纳你的,点错了。。。
一年多之前 回复
u011412588
u011412588 不过今天在论坛看到说c的编译要把变量在生存块的起始定义,没试过,回去看看行不行
一年多之前 回复
u011412588
u011412588 我是在pro文件里加的ws2_32.lib 即LIBS+=-lWs2_32
一年多之前 回复
qq423399099
qq423399099 回复Stock_: 要在.pro文件中加入LIBS += -lWs2_32(加完以后记得把build-XXX-XX文件夹删掉重新生成)
一年多之前 回复
qq423399099
qq423399099 回复Stock_:我今天又试了下楼主加库的时候是不是用#pragma comment(lib, "ws2_32.lib")这个的
一年多之前 回复
u011412588
u011412588 依旧不行
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!