え?全力で生きているかって?
――答えはYesだ。当たり前だろそれが人生なんだよ!!
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
1/31 11:58 ソース修正(getモード時の動作修正)
メールクライアント(メール送受信ソフト)をメインマシンで作るよ。
サーバー設置編読んでなければ先に読んだほうがいいです→サーバー設置編
ソース書く前に、サーバーの動作を再確認。
メールをずっと待ってるサーバーたん
↓
メールきた!
↓
メールの内容で動作が変わるよ
・メッセージの内容が「get()」やったら
→ログ(未読メッセージ)をメインマシンに送る(レッドストーントーチ ジュワ...消)
・メッセージの内容が「getall()」やったら
→全ログ(メッセージ一覧)をメインマシンに送る
・それ以外(hi とか hello とか)やったら
→ログに書き溜める(レッドストーントーチ ピッカーン 光)
↓
またメールを待つサーバーたん
っていう動作ね。
この中の、メッセージ作って送ったり、get()とかgetall()とか送る部分を今回作るのね。
つまり流れで言うと、
クライアント起動
↓
モードが3つ
・メール送信
・get()って送って未読メール受信&表示
・getall()って送ってメール一覧受信&表示
↓
終了
じゃぁソースいくで。
今回の環境
・メインマシン→アドバンスドPC。ID=27
・メール受信サーバー→普通のPC。ID=28
再確認だが、コメントは -- (ハイフン2つ)な。
今回のプログラム名はmailでいく。edit mailでエディタ起動。以下ソース
ソースコード以上
こっちもソース間違ってるかもしれんからその時はコメントお願いします。
動作イメージはこんな感じ。
まずはsendモード。俺宛のメールは28固定。

次getモード。ちなみに24はメインでもサーバーでもない第3のマシンのID

次getallモード。過去のテストがずらり。

とりあえず以上。
ちなみに、sendで受信サーバー以外にも送れるけど、向こうが受信するかどうかは向こうの状態次第ってやつですね。例えば、第3のマシン(24)からメインマシン(27)にsendで送ろうとすると、メインがrednet.receive()状態じゃないとだめって例のアレですね。
んで、これ書いてる時に、メール無いときにgetモード発動させた時の動作が無いことに気づいたからそのうち修正かけます。でも今の状態でも動作はします。 ←修正済
次、これの応用みたいな感じでチャットツールも作ったからそのうちソース晒します。
謝辞
サーバー用プログラム、クライアントプログラム開発の際、errorcode氏の助言を参考に致しました。ありがとうございました。
以上。
メールクライアント(メール送受信ソフト)をメインマシンで作るよ。
サーバー設置編読んでなければ先に読んだほうがいいです→サーバー設置編
ソース書く前に、サーバーの動作を再確認。
メールをずっと待ってるサーバーたん
↓
メールきた!
↓
メールの内容で動作が変わるよ
・メッセージの内容が「get()」やったら
→ログ(未読メッセージ)をメインマシンに送る(レッドストーントーチ ジュワ...消)
・メッセージの内容が「getall()」やったら
→全ログ(メッセージ一覧)をメインマシンに送る
・それ以外(hi とか hello とか)やったら
→ログに書き溜める(レッドストーントーチ ピッカーン 光)
↓
またメールを待つサーバーたん
っていう動作ね。
この中の、メッセージ作って送ったり、get()とかgetall()とか送る部分を今回作るのね。
つまり流れで言うと、
クライアント起動
↓
モードが3つ
・メール送信
・get()って送って未読メール受信&表示
・getall()って送ってメール一覧受信&表示
↓
終了
じゃぁソースいくで。
今回の環境
・メインマシン→アドバンスドPC。ID=27
・メール受信サーバー→普通のPC。ID=28
再確認だが、コメントは -- (ハイフン2つ)な。
今回のプログラム名はmailでいく。edit mailでエディタ起動。以下ソース
SERVER_ID=28 --サーバーID。28
SERVER_ID=tonumber(SERVER_ID) --説明省略
print("mode?")
write("\tsend,get,getall >")
--モード一覧。send,get,getall
--サーバー設置編でやったアレの通り
--あと、printとwriteの違いだが、
--自動的に改行してくれるかしてくれないかの違い。
--writeは改行してくれない
mode=read()
--どのモードかキーボードから読み込み
if mode=="send" then
--send mode
--メール送信モード
--正直言うとswitch文で書きたかったけど
--書式調べんのめんどくさかったからif文で失礼
write("send for? >")
--受信相手のidを入力
local id=read()
--read()ってやることでキーボードから入力できる
local id=tonumber(id)
--local ってやつは気にしなくていい。
--知りたかったら「lua ローカル変数」とかでググって
write("message...>")
--メッセージ入力
local msg=read()
--send message
--ここで送信
rednet.send(id,msg)
elseif mode=="get" then
--get mode
--logファイルを取得する=未読メッセージ受信
rednet.send(SERVER_ID,"get()")
--get()ってメッセージをサーバーに送ってやることで、
--サーバーのlogファイルを取得できるようになる
--get message(timeout 30sec)
--タイムアウトの設定を追記
--30秒たったら受信やめる
--get message(timeout 30sec)
--タイムアウトの設定を追記
--30秒たったら受信やめる
print("message getting...")
local id,msg=rednet.receive(30)
local id,msg=rednet.receive(30)
--show message
print("\n"..msg)
--受信したlogファイルを表示
rednet.send(SERVER_ID,"stop()")
--サーバーはずっとログファイルを送信し続けるから、
--stop()ってメッセージ送って送信をやめてもらう
elseif mode=="getall" then
--getall mode
--alllogファイル取得=メッセージ一覧取得
rednet.send(SERVER_ID,"getall()") --上と同じ
local event,id,msg=os.pullEvent("rednet_message")
--show message
print("\n"..msg)
rednet.send(SERVER_ID,"stop()")
else
--print usage
--使い方説明というか説明になってないけど
print("mode:")
print("\tsend:send mail")
print("\tget:get mail")
print("\tgetall:get all mail")
return
end
ソースコード以上
こっちもソース間違ってるかもしれんからその時はコメントお願いします。
動作イメージはこんな感じ。
まずはsendモード。俺宛のメールは28固定。
次getモード。ちなみに24はメインでもサーバーでもない第3のマシンのID
次getallモード。過去のテストがずらり。
とりあえず以上。
ちなみに、sendで受信サーバー以外にも送れるけど、向こうが受信するかどうかは向こうの状態次第ってやつですね。例えば、第3のマシン(24)からメインマシン(27)にsendで送ろうとすると、メインがrednet.receive()状態じゃないとだめって例のアレですね。
次、これの応用みたいな感じでチャットツールも作ったからそのうちソース晒します。
謝辞
サーバー用プログラム、クライアントプログラム開発の際、errorcode氏の助言を参考に致しました。ありがとうございました。
以上。
PR
この記事にコメントする
カルティエ 時計 レディース タンク
ルイヴィトンコピー品第1店 販売専門店
★真のブランドコピー品質をお届けするルイヴィトンブランドコピー!
※価値あるブランドブランドコピー財布、バッグのヴィトンコピー※
■品質重視なブランドコピー商品販売!
★高級品☆┃時計┃バッグ┃財 布┃その他┃
◆★ 誠実★信用★顧客は至上
●在庫情報随時更新!
品質がよい 価格が低い 実物写真 品質を重視
100%品質保証 100%満足保障 信用第一
★人気最新品┃特恵中┃☆腕時計、バッグ、財布、ベルト、靴、帽子、アクセサリー、小物☆
★当店商品送料無料日本全国!
※全物品激安,到着するのは迅速で、安全。
■あなたの訪問のを期待しています!☆ヽ(▽⌒)
会社名称 ルイヴィトンコピーN品第1店
ホームページ上でのご注文は24時間受け付けております
★真のブランドコピー品質をお届けするルイヴィトンブランドコピー!
※価値あるブランドブランドコピー財布、バッグのヴィトンコピー※
■品質重視なブランドコピー商品販売!
★高級品☆┃時計┃バッグ┃財 布┃その他┃
◆★ 誠実★信用★顧客は至上
●在庫情報随時更新!
品質がよい 価格が低い 実物写真 品質を重視
100%品質保証 100%満足保障 信用第一
★人気最新品┃特恵中┃☆腕時計、バッグ、財布、ベルト、靴、帽子、アクセサリー、小物☆
★当店商品送料無料日本全国!
※全物品激安,到着するのは迅速で、安全。
■あなたの訪問のを期待しています!☆ヽ(▽⌒)
会社名称 ルイヴィトンコピーN品第1店
ホームページ上でのご注文は24時間受け付けております
bracelet cartier diamant replique
cartierlovejesduas I have played with all three. It’s the flimsiest one. It has the worst battery life. It has the most bugs. It’s UI is the hardest one to use. Shall I go on?
bracelet cartier diamant replique http://www.braccialegioielli.cn/fr/classic-fake-cartier-love-bracelet-in-yellow-gold-b6035516-p181/
bracelet cartier diamant replique http://www.braccialegioielli.cn/fr/classic-fake-cartier-love-bracelet-in-yellow-gold-b6035516-p181/
カレンダー
03 | 2025/04 | 05 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
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 |
カウンター
プロフィール
HN:
Mugen
性別:
男性
職業:
社会人だよバカヤローー!!
趣味:
ピアノ、アニメ・音楽鑑賞、ネットサーフィンとかとか
自己紹介:
ただの車好きな変態です。
twitterもやってますんで、よければリンクからドゾー
twitterもやってますんで、よければリンクからドゾー
最新記事
(09/12)
(08/12)
(06/27)
(05/31)
(05/26)
最新CM
[01/14 FreddieSpemo]
[01/13 FreddieSpemo]
[01/13 FreddieSpemo]
[12/21 réplique cartier bracelet]
[12/16 van cleef and arpels alhambra diamond necklace knock off]
最新TB
ブログ内検索
最古記事
(08/12)
(11/28)
(11/29)
(11/29)
(05/21)
アクセス解析