GUI 프로그래밍은 많이 해봤지만, TCP/IP 프로그래밍은 거의 처음이네요.
Qt Creator를 실행해서 프로젝트를 하나 생성해 줍시다.
채팅 프로그램은 서버 프로그램과 클라이언트 프로그램 두가지로 나눠집니다.
즉, 서버프로그램, 클라이언트 프로그램을 따로 만들어야 합니다.
클라이언트 프로그램은 사용자 개개인을 말하고, 서버 프로그램은 사용자들이 전송한 메세지를 모아서 뿌려주는 기능을 합니다.
서버와 클라이언트는 일대다의 관계가 됩니다.
지금 살펴볼 코드는 단지 헤더파일입니다. 풀 코드는 제가 올린 소스파일에 있습니다.
-- 서버의 클래스 선언부 --
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #ifndef CHATSERVER_H #define CHATSERVER_H #include <QStringList> #include <QTcpServer> #include <QTcpSocket> #include <QMap> #include <QSet> class chatServer : public QTcpServer { Q_OBJECT public: chatServer(QObject* parent=0); private slots: void readyRead(); //클라이언트로부터 메세지가 전달됨을 감지하는 함수 void disconnected(); //클라이언트가 접속을 끊을 경우를 감지하는 함수 void sendUserList(); //새로 들어온 유저의 닉네임을 모든 클라이언트에게 뿌려주는 함수 protected: void incomingConnection(int socketfd); //처음 유저가 접속을 시도할때 발생하는 함수 private: int userAmount; //유저 닉네임에 번호를 매김 QSet<QTcpSocket*> clients; //클라이언트 소켓저장 QMap<QTcpSocket*,QString> users; //유저 이름 저장 }; #endif // CHATSERVER_H |
-- 클라이언트 클래스 선언부 --
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } class QTcpSocket; class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void readyRead(); //서버로부터 메시지가 온경우 void connected(); //연결이 완료되었으면 서버에게 연결되었다고 알림 void on_connectButton_clicked(); //연결 버튼을 누름 void on_sendButton_clicked(); //채팅 메세지 전송 버튼을 누름 private: Ui::Widget *ui; QTcpSocket* socket; //나의 소켓 }; #endif // WIDGET_H |
제가 올린 첨부파일에 올린 것은 위 코드대로 컴파일한 실행파일입니다.
첨부파일에 올린 실행압축파일을 다운받아서 임의의 위치에 압축을 풉니다.
폴더안에 chatServer_001.exe를 실행합니다.
chatClient_001.exe를 실행합니다.
아이피 주소는 본인 IP 주소를 입력하고, 포트번호는 4200입니다.
IP와 포트번호를 입력하고 접속 버튼을 누르면 서버에 접속이 됩니다.
이로써 채팅프로그램을 완성했습니다.
설명이 많이 부족하지만 추후에 추가하도록 하겠습니다.
'컴퓨터 공학 > Qt' 카테고리의 다른 글
[ Qt 프로그래밍 ] OpenGL 로 큐브 만들기 (0) | 2015.11.26 |
---|---|
[ Qt 프로그래밍 ] 다른 사람이 만든 프로젝트 열기 (0) | 2015.11.26 |
[ Qt 프로그래밍 ] Qwt에서 컬러맵 만들기 (0) | 2015.11.26 |
[ Qt 프로그래밍 ] Qt의 시각화 라이브러리 Qwt 설치하기 (MinGW, Qt4.8.3) (0) | 2015.11.26 |
[ Qt 프로그래밍 ] Qt5 설치하기 (0) | 2015.11.26 |