Enviar pesquisa
Carregar
Qt でIRCクライアント作ってみた
•
Transferir como ODP, PDF
•
1 gostou
•
1,166 visualizações
Yikei Lu
Seguir
Qt でIRCクライアント作ってみた。 Qt勉強会 @ 東京
Leia menos
Leia mais
Tecnologia
Diversão e humor
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 18
Baixar agora
Recomendados
Qt creatorでremote_debug
Qt creatorでremote_debug
Kazuo Asano (@kazuo_asa)
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 Nagoya
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 Nagoya
Kazuo Asano (@kazuo_asa)
仮想通貨ボットサービスによるJSボット作成
仮想通貨ボットサービスによるJSボット作成
慎二 山田
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 hamanako
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 hamanako
Kazuo Asano (@kazuo_asa)
Make a graph at Qt(used Qwt library)
Make a graph at Qt(used Qwt library)
Kazuo Asano (@kazuo_asa)
Real legacy
Real legacy
Koichiro Ohba
Git地図
Git地図
yoshiaki iwanaga
git ~start PullRequest~
git ~start PullRequest~
Souichirou Andou
Recomendados
Qt creatorでremote_debug
Qt creatorでremote_debug
Kazuo Asano (@kazuo_asa)
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 Nagoya
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 Nagoya
Kazuo Asano (@kazuo_asa)
仮想通貨ボットサービスによるJSボット作成
仮想通貨ボットサービスによるJSボット作成
慎二 山田
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 hamanako
Qtではじめるクロスプラットフォームアプリケーション開発 osc2019 hamanako
Kazuo Asano (@kazuo_asa)
Make a graph at Qt(used Qwt library)
Make a graph at Qt(used Qwt library)
Kazuo Asano (@kazuo_asa)
Real legacy
Real legacy
Koichiro Ohba
Git地図
Git地図
yoshiaki iwanaga
git ~start PullRequest~
git ~start PullRequest~
Souichirou Andou
個人で作っているgoのプロダクト by zchee編
個人で作っているgoのプロダクト by zchee編
Koichi Shiraishi
Excite beer bash06
Excite beer bash06
Arata Honda
Groovyの紹介20130323
Groovyの紹介20130323
Yasuharu Hayami
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)
Tadahiro Ishisaka
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティス
Ryo Sumasu
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
mihararyosuke
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
Tadahiro Ishisaka
Unityで関数型言語ぽく書く 如法会#1
Unityで関数型言語ぽく書く 如法会#1
NAKAOKU Takahiro
it's Qt!
it's Qt!
You&I
Gitコマンド勉強会 第0回 はじめに
Gitコマンド勉強会 第0回 はじめに
Kazuki Sakai
Qt のコミュニティと日本語での情報発信②
Qt のコミュニティと日本語での情報発信②
Yikei Lu
mikutter入門
mikutter入門
Katsuyoshi Matsumoto
Gitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストール
Kiyoshi SATOH
統一Qtコミュニティー
統一Qtコミュニティー
Yikei Lu
私が複数人開発で感じている Git・GitHubのうまみ
私が複数人開発で感じている Git・GitHubのうまみ
Shihomi Katayama
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
Uehara Junji
Datalab and colaboratory
Datalab and colaboratory
Hayato Yoshikawa
dokku を本番環境で使ってみた話
dokku を本番環境で使ってみた話
Kazuhiro Nishiyama
Serverless on GCP
Serverless on GCP
Hayato Yoshikawa
Gws 20130315 gradle_handson
Gws 20130315 gradle_handson
Nobuhiro Sue
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
Kazuo Asano (@kazuo_asa)
Mais conteúdo relacionado
Mais procurados
個人で作っているgoのプロダクト by zchee編
個人で作っているgoのプロダクト by zchee編
Koichi Shiraishi
Excite beer bash06
Excite beer bash06
Arata Honda
Groovyの紹介20130323
Groovyの紹介20130323
Yasuharu Hayami
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)
Tadahiro Ishisaka
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティス
Ryo Sumasu
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
mihararyosuke
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
Tadahiro Ishisaka
Unityで関数型言語ぽく書く 如法会#1
Unityで関数型言語ぽく書く 如法会#1
NAKAOKU Takahiro
it's Qt!
it's Qt!
You&I
Gitコマンド勉強会 第0回 はじめに
Gitコマンド勉強会 第0回 はじめに
Kazuki Sakai
Qt のコミュニティと日本語での情報発信②
Qt のコミュニティと日本語での情報発信②
Yikei Lu
mikutter入門
mikutter入門
Katsuyoshi Matsumoto
Gitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストール
Kiyoshi SATOH
統一Qtコミュニティー
統一Qtコミュニティー
Yikei Lu
私が複数人開発で感じている Git・GitHubのうまみ
私が複数人開発で感じている Git・GitHubのうまみ
Shihomi Katayama
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
Uehara Junji
Datalab and colaboratory
Datalab and colaboratory
Hayato Yoshikawa
dokku を本番環境で使ってみた話
dokku を本番環境で使ってみた話
Kazuhiro Nishiyama
Serverless on GCP
Serverless on GCP
Hayato Yoshikawa
Gws 20130315 gradle_handson
Gws 20130315 gradle_handson
Nobuhiro Sue
Mais procurados
(20)
個人で作っているgoのプロダクト by zchee編
個人で作っているgoのプロダクト by zchee編
Excite beer bash06
Excite beer bash06
Groovyの紹介20130323
Groovyの紹介20130323
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)
WindowsでGitを使う際のベストプラクティス
WindowsでGitを使う際のベストプラクティス
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Git運用ダメ出し会 - ネクストスケープ 2014/05/27 パワーランチ資料
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
Unityで関数型言語ぽく書く 如法会#1
Unityで関数型言語ぽく書く 如法会#1
it's Qt!
it's Qt!
Gitコマンド勉強会 第0回 はじめに
Gitコマンド勉強会 第0回 はじめに
Qt のコミュニティと日本語での情報発信②
Qt のコミュニティと日本語での情報発信②
mikutter入門
mikutter入門
Gitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストール
統一Qtコミュニティー
統一Qtコミュニティー
私が複数人開発で感じている Git・GitHubのうまみ
私が複数人開発で感じている Git・GitHubのうまみ
Read Groovy Compile process(Groovy Benkyoukai 2013)
Read Groovy Compile process(Groovy Benkyoukai 2013)
Datalab and colaboratory
Datalab and colaboratory
dokku を本番環境で使ってみた話
dokku を本番環境で使ってみた話
Serverless on GCP
Serverless on GCP
Gws 20130315 gradle_handson
Gws 20130315 gradle_handson
Semelhante a Qt でIRCクライアント作ってみた
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
Kazuo Asano (@kazuo_asa)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Naoki Matsumoto
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
Masaya Aoyama
EdisonでMQTT
EdisonでMQTT
shirou wakayama
QtでC++開発環境構築
QtでC++開発環境構築
You&I
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
Yuki Suga
Code ignitertalk 01
Code ignitertalk 01
Takako Miyagawa
みんなのブログ紹介
みんなのブログ紹介
Sanae Taniguchi
MQTTとAMQPと.NET
MQTTとAMQPと.NET
terurou
Piwik fluentd at OSC Tokyo 2015 Fall
Piwik fluentd at OSC Tokyo 2015 Fall
Takashi Yamamoto
.NET Core時代のCI/CD
.NET Core時代のCI/CD
Yuta Matsumura
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
Kensuke Maeda
Fukuoka Ruby Award 2012
Fukuoka Ruby Award 2012
ThinReports
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
Logにまつわるエトセトラ
Logにまつわるエトセトラ
leverages_event
Endo kitura on_bluemix
Endo kitura on_bluemix
joohoun song
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Preferred Networks
RTミドルウエア講習会2015
RTミドルウエア講習会2015
Yuki Suga
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
Jxck Jxck
Semelhante a Qt でIRCクライアント作ってみた
(20)
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
NGK2018B マルチプラットフォームQtと日本Qtユーザー会の紹介
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
EdisonでMQTT
EdisonでMQTT
QtでC++開発環境構築
QtでC++開発環境構築
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
Code ignitertalk 01
Code ignitertalk 01
みんなのブログ紹介
みんなのブログ紹介
MQTTとAMQPと.NET
MQTTとAMQPと.NET
Piwik fluentd at OSC Tokyo 2015 Fall
Piwik fluentd at OSC Tokyo 2015 Fall
.NET Core時代のCI/CD
.NET Core時代のCI/CD
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
Fukuoka Ruby Award 2012
Fukuoka Ruby Award 2012
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Logにまつわるエトセトラ
Logにまつわるエトセトラ
Endo kitura on_bluemix
Endo kitura on_bluemix
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
RTミドルウエア講習会2015
RTミドルウエア講習会2015
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
Último
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
Último
(9)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Qt でIRCクライアント作ってみた
1.
QtでIRCクライアント作ってみた @luyikei
2.
自己紹介 ● @luyikei です。 ● https://twitter.com/luyikei ●
3.
まず最初に・・・ ● プロジェクトを作成します ● 例ではプロジェクト名はQtestIRCでやります ● ターゲット!! Freenode の #luyikei
4.
まずは UI を作成しましょう
5.
部品 ● QPushButton :
connectButton ● QPushButton : disconnectButton ● QLineInput : inputLineEdit ● QPushButton : submitButton ● QTabWidget ● QTableVIew : messageView ● QTextEdit : logView
6.
Log と Message
完全分離(雑) ● TabWidget を使って Log と Message を振り分け る。 →これによってログを綺麗に表示する手間が省 ける(爆)
7.
ヘッダーファイル ● IRC も所詮ただの socket
を使った簡易チャット システム ● でも便利 ● private: QTcpSocket *socket; // IRC 通信用 QStandardItemModel *model; // messageView
8.
ヘッダーファイル 2 ● private
slots: void readData(); // socket の IRC メッセージ取得用 SLOT void connectToServer(); // connectButton の SLOT void disconnectFromServer(); /* disconnectButton の SLOT */ void sendMessage(); // submitButton の SLOT
9.
まずは MainWindow::MainWindow から socket
= new QTcpSocket(this); connect(socket,SIGNAL(readyRead()),this,SLOT(readData())); connect(ui->connectButton,SIGNAL(clicked()),this,SLOT(connectToServer())); connect(ui- >disconnectButton,SIGNAL(clicked()),this,SLOT(disconnectFromServer())); connect(ui->submitButton,SIGNAL(clicked()),this,SLOT(sendMessage())); model = new QStandardItemModel(0,1,this); model->setHorizontalHeaderItem(0,new QStandardItem("Username")); model->setHorizontalHeaderItem(1,new QStandardItem("Message")); ui->messageView->setModel(model);
10.
まずは connectToServer ()から socket->connectToHost(QString("chat.freenode.net"),6665);
/* freenode に接 続 */ socket->write("USER QtestIRC QtestIRC QtestIRC QtestIRC n"); /* USER を 登録 */ socket->write("NICK QtestIRC n"); // ニック を登録 socket->write("JOIN #luyikei n"); // #luyikei に入室
11.
IRC の書式① 接続編 USER
<username> <user's mode> <unused> <real name> ※ クライアントが新しく接続する場合に使います。 例(雑): USER QtestIRC QtestIRC QtestIRC QtestIRC ______________________________________________________________________ NICK <nickname> ※ ニックネームを設定します 例(雑): NICK QtestIRC
12.
IRC の書式② 入室編 JOIN
<ルーム名> 例: JOIN #luyikei
13.
sendMessage() QString toSend =
QString("PRIVMSG #luyikei %1 n").arg(ui->inputLineEdit->text()); // 送信す る IRC コマンド socket->write(toSend.toUtf8().data()); // socket に write つまり送信 int row = model->rowCount(); // 追加する Item の列番号を取得 // messageView に追加する Username と Message modelに設定 model->setItem(row,0,new QStandardItem(QString("QtestIRC"))); model->setItem(row,1,new QStandardItem(ui->inputLineEdit->text())); // 一応ログにも追加 ui->logView->append(toSend); // inputLineEditを綺麗に ui->inputLineEdit->clear();
14.
IRC の書式② 文字送信編 PRIVMSG
<ルーム名> <メッセージ> 例: PRIVMSG #luyikei HELLO!!
15.
readData() QString readLine =
socket->readLine(); // IRC サーバーから送られたメッセージを取得 ui->LogView->append(readLine); // logView にぶちこむ if(!(readLine.indexOf("PRIVMSG") == -1 )){ // メッセージか判定 QString msg = readLine.split(":").last(); // メッセージを取得 QString tmp = readLine.split("!~").first(); QString username = tmp.right(tmp.size()-1); // ユーザー名を取得 int row = model->rowCount(); model->setItem(row,0,new QStandardItem(QString(username))); model->setItem(row,1,new QStandardItem(QString(msg))); } if(socket->canReadLine()) readData(); // もしメッセージが残っている場合引き続き取得 再帰
16.
IRC の書式③ 文字取得編 ● 例: :luyikei__!~luyikei@124x35x199x106.ap124.ftth.ucom.ne.jp
PRIVMSG #luyikei :test つまり・・・ :<nickname>!~<ホスト名> PRIVMSG <ルーム名> :<メッセージ> として送られてくるのだ!
17.
disconnectFromServer() socket->flush(); // バッファに溜まっているメッセージを送信 socket->disconnect();
// 切断!!
18.
終わり!
Baixar agora