Добрый день. Компилятор не видит *.h файлы, хотя они существуют и лежат по правильному пути. *.pro файл | Код | QT += core QT += network QT -= gui TARGET = server CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp \ server.cpp \ client.cpp \ test.cpp HEADERS += \ client.h \ server.h \ test.h
|
client.h и client.cpp | Код | #ifndef CLIENT_H #define CLIENT_H
#include <QtNetwork> #include <QTcpSocket> #include <QHostAddress>
class client { private: QString _nickname; QString _computer_name; QString _ip_address; QTcpSocket* _socket; int _port; public: client(); client(QString nickname, int port);
void set_nickname(QString nickname){_nickname = nickname;} QString get_nickname(){return _nickname;}
void set_port(int port){_port = port;} int get_port(){return _port;}
bool set_socket(QTcpSocket* socket);
QString get_ip_address(){return _ip_address;} QString get_comp_name() {return _computer_name;} };
#endif // CLIENT_H
//cpp
#include "client.h"
client::client(): _port(0), _socket(NULL) {
}
client::client(QString nickname, int port): _nickname(nickname), _port(port), _socket(NULL) {
}
bool client::set_socket(QTcpSocket *socket) { if(socket != NULL) return false; _socket = socket; _ip_address = socket->peerAddress().toString(); _computer_name = socket->peerName();
return true; }
|
server.h и server.cpp | Код | #ifndef SERVER_H #define SERVER_H
#include <vector> #include <client.h> #include <QTcpServer> #include <QDataStream> #include <QRegExp>
class server { private: int _port; std::vector<client> _client_list; QTcpServer* _socket; bool _is_started;
void send_to_client(QTcpSocket* client_socket, QString& msg); public: bool start(int port = 0); void stop(); int get_port(){return _port;} server(); ~server();
public slots: void slot_new_connection(); void slot_read_from_client(); };
#endif // SERVER_H
//cpp
#include "server.h"
bool server::start(int port) { _port = port; if(!_is_started){ _is_started = _socket->listen(QHostAddress::Any, _port); return _is_started; } return false; }
void server::stop() { if(_is_started){ _socket->close(); _is_started = false; } }
server::server() : _is_started(false) { _socket = new QTcpServer(this); _port = 0;
QObject::connect(_socket, SIGNAL(newConnection()), this, SLOT(slot_new_connection())); }
server::~server() { delete _socket(); _socket = NULL; _port = 0; }
void server::slot_new_connection() { client* new_client = new client(); QTcpSocket* client_socket = _socket->nextPendingConnection(); new_client->set_socket(client_socket); QObject::connect(client_socket, SIGNAL(readyRead()), this, SLOT(slot_read_from_client())); }
void server::slot_read_from_client() { QTcpSocket* socket = (QTcpSocket*)sender(); QDataStream in(socket); QRegExp nick_reg_exp("#nickname\<([^\>]+)>"); in.setVersion(QDataStream::Qt_5_1); int next_datablock_size = 0;
while(true) { if(socket->bytesAvailable() < sizeof(int)) break; in >> next_datablock_size;
if(socket->bytesAvailable() < next_datablock_size) break;
QTime time; QString msg; QString nickname;
in >> time >> msg; if(msg.startsWith("#nickname<")){ int pos = nick_reg_exp.indexIn(msg); if(pos > -1) nickname = nick_reg_exp.cap(1); } next_datablock_size = 0; } }
|
main.cpp | Код | #include <QCoreApplication> #include <server.h> #include <QTextStream>
int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); server host; if(host.start(1111)) QTextStream(stdout) << "success" << endl; else QTextStream(stdout) << "failed" << endl;
return a.exec(); }
|
Компилятор выдает две ошибки: D:\Docs\BSUIR\lab6\server\server.h:5: error: C1083: Cannot open include file: 'client.h': No such file or directory D:\Docs\BSUIR\lab6\server\main.cpp:2: error: C1083: Cannot open include file: 'server.h': No such file or directory В чем может быть проблема и как ее решить? Спасибо.
|