当前位置:  技术问答>linux和unix

qt和socket混合编程时,调用close,遇到的难题

    来源: 互联网  发布时间:2017-01-13

    本文导语:  1、请问,我在槽函数中调用socket的close(socket),会提示close与widget类中的close参数不匹配,这个问题如何解决? client_dlg.cpp: In member function `void ClientDialog::slotConnect()': client_dlg.cpp:55: no matching function for call to `Clien...

1、请问,我在槽函数中调用socket的close(socket),会提示close与widget类中的close参数不匹配,这个问题如何解决?

client_dlg.cpp: In member function `void ClientDialog::slotConnect()':
client_dlg.cpp:55: no matching function for call to `ClientDialog::close(int&)'
/usr/local/Trolltech/Qt-4.5.3/include/QtGui/qwidget.h:485: candidates are: bool 
   QWidget::close()
client_dlg.cpp:56:2: warning: no newline at end of file
make: *** [client_dlg.o] Error 1


2、调用socket的connect也提示也窗体类的connect参数不匹配,我在connect前加了::connect可以解决。(代码中47行)
但close前加::,编译提示close函数没有声明。

client_dlg.cpp: In member function `void ClientDialog::slotConnect()':
client_dlg.cpp:55: `::close' undeclared (first use here)
client_dlg.cpp:56:2: warning: no newline at end of file
make: *** [client_dlg.o] Error 1


有人遇到过这个问题吗?或知道如何解决?谢谢。

3、我用的是arm920t-eabi-4.1.2,Qt-4.5.3,就是我们视频和FTP中提供的。源代码如下:

头文件:client_dlg.h

#ifndef CLIENT_DLG_H
#define CLIENT_DLG_H

#include 

class ClientDialog : public QDialog
{
    Q_OBJECT
public:
    ClientDialog( QWidget *parent=0, Qt::WindowFlags  f=0 );
    ~ClientDialog();
public:
     QPushButton *m_pConnectPushButton;
private slots:
        void slotConnect();
};


#endif

实现文件:client_dlg.cpp
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define SERVPORT 3333
#define MAXDATASIZE 100 /*每次最大数据传输量 */

#include "client_dlg.h"

ClientDialog::ClientDialog( QWidget *parent, Qt::WindowFlags  f )
    : QDialog( parent, f )
{
    setWindowTitle(tr("Client Dialog"));
    m_pConnectPushButton = new QPushButton();
    m_pConnectPushButton->setText(tr("Connect"));
        connect( m_pConnectPushButton, SIGNAL( clicked() ), this, SLOT( slotConnect() ) );
}

ClientDialog::~ClientDialog()
{
        delete m_pConnectPushButton;
        m_pConnectPushButton = NULL;
}

void ClientDialog::slotConnect()
{
        int sockfd, recvbytes;
        char buf[MAXDATASIZE] = {0};
        struct hostent *host;
        struct sockaddr_in serv_addr;

        if ((host=gethostbyname("192.168.0.66"))==NULL)
                {       perror("gethostbyname出错!"); exit(1); }

        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
                {       perror("socket创建出错!"); exit(1);    }
        //初始化客户端
        serv_addr.sin_family=AF_INET;
        serv_addr.sin_port=htons(SERVPORT);
        serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
        bzero(&(serv_addr.sin_zero),8);
        //connect
        if (::connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) == -1)
                { perror("connect error!"); exit(1); }
        //recv
        if ((recvbytes=recv(sockfd, buf, MAXDATASIZE, 0)) ==-1)
                { perror("recv出错!"); exit(1); }

        buf[recvbytes] = '';
        printf("Received: %s",buf);
        ::close(sockfd);
}

谢谢!

|

#include 


    
 
 

您可能感兴趣的文章:

  • 创建了2个套接字Raw socket和socket,都调用recvfrom(),一个专门捕获数据包,一个在9001端口监听UDP请求,怎么不行?
  • read一个socket, 发现read到的长度是0, 是否一定代表对方调用了close关闭了socket?
  • SOCKET调用close断开连接的时候回主动发FIN ACK包吗?
  • 用accept系统调用得到的socket能用在readv和writev上吗?
  • 如何知道一个用有没有权限调用bind()函数(socket编程的时候)
  • socket下调用write后出现:Broken pipe错误
  • 内核源文件/net/socket.c中调用其他模块的函数,该如何实现
  • PHP异步调用socket小例子
  • select+read 读服务器发送过来的数据, 假设服务器调用close后, 客户端的select是否返回这个socket可读?
  • unix操作系统上的socket服务器端程序在调用bind涵数的时候报错,是怎么回事了?
  • unix 下的socket 函数调用失败会写 errno. 哪位有 errno 的值 和 其对应意义 的 对照表???
  • socket编程,服务器会用bind()绑定端口,而客户端不用绑定端口就可以调用connect()。那么客户端的端口时系统自己分配的么?是何时绑定的?
  • 求助socket编程问题:C/S模式.客户端调用Winsock函数connect()的时候,返回错误码是10065(主机路由不可达).
  • 我调用socket向外发送消息,为什么在发送的同时,会打印字符串到屏幕上
  • 请教个问题:linux内核中socket系统调用的几个方法如何将客户端和服务端链接起来的?
  • 调用read函数读取socket流时,为何返回值总是1
  • socket中的system调用问题
  • PHP异步调用socket与php异步执行实例
  • linux下的socket接收数据的难题!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • socket读取中文数字混合字符出错
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • 操作系统 iis7站长之家
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.net类socket的类成员方法: gettrafficclass定义及介绍
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • java命名空间java.net类socket的类成员方法: getport定义及介绍
  • 线程间可否通过管道传递SOCKET句柄?还有其他方式传递SOCKET么?
  • java命名空间java.net类socket的类成员方法: getlocalport定义及介绍
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • java命名空间java.net类socket的类成员方法: getinetaddress定义及介绍
  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • java命名空间java.net类socket的类成员方法: isconnected定义及介绍
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3