忍者ブログ
え?全力で生きているかって? ――答えはYesだ。当たり前だろそれが人生なんだよ!!
[490]  [489]  [488]  [487]  [486]  [485]  [484]  [483]  [482]  [481]  [480
1/31 11:58 ソース修正(getモード時の動作修正)



メールクライアント(メール送受信ソフト)をメインマシンで作るよ。

サーバー設置編読んでなければ先に読んだほうがいいです→サーバー設置編



ソース書く前に、サーバーの動作を再確認。


メールをずっと待ってるサーバーたん
  ↓
メールきた!
  ↓
メールの内容で動作が変わるよ

・メッセージの内容が「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秒たったら受信やめる
  print("message getting...")
  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固定。


2013-01-31_09.18.48.png







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


2013-01-31_09.19.05.png







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


2013-01-31_09.38.33.png






とりあえず以上。

ちなみに、sendで受信サーバー以外にも送れるけど、向こうが受信するかどうかは向こうの状態次第ってやつですね。例えば、第3のマシン(24)からメインマシン(27)にsendで送ろうとすると、メインがrednet.receive()状態じゃないとだめって例のアレですね。



んで、これ書いてる時に、メール無いときにgetモード発動させた時の動作が無いことに気づいたからそのうち修正かけます。でも今の状態でも動作はします。 ←修正済



次、これの応用みたいな感じでチャットツールも作ったからそのうちソース晒します。




謝辞

サーバー用プログラム、クライアントプログラム開発の際、errorcode氏の助言を参考に致しました。ありがとうございました。



以上。


PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
カルティエ 時計 レディース タンク
ルイヴィトンコピー品第1店 販売専門店

★真のブランドコピー品質をお届けするルイヴィトンブランドコピー!
※価値あるブランドブランドコピー財布、バッグのヴィトンコピー※
■品質重視なブランドコピー商品販売!
★高級品☆┃時計┃バッグ┃財 布┃その他┃
◆★ 誠実★信用★顧客は至上
●在庫情報随時更新!
品質がよい 価格が低い 実物写真 品質を重視
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 URL 2017/08/31(Thu)03:45:27 編集
oyster perpetual rolex watch replica
cartierlovejesduas Bem lembrado Grocho. Shine On é uma maravilha prog, lindissima, só que o Syd ainda tava vivo na época. Mas sua beleza realmente é incomparavel
oyster perpetual rolex watch replica http://www.movement-watch.com/
ブランド激安市場
初めての利用で不安でしたが、梱包の丁寧さ、手書きのお手紙ナド…素晴らしいスタッフさんの対応ありがとうございました!!
今までの購入SHOPの中でNo.1です。
今後も利用させていただきます。
ブランド激安市場 URL 2017/11/11(Sat)18:15:58 編集
カレンダー
10 2017/11 12
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




最新CM
[11/18 OmYAdminia]
[11/16 Jerryatorn]
[11/15 Scottzet]
[11/11 ブランド激安市場]
[11/09 cartier love necklace pink gold fake]
バーコード
最新TB
(10/02)
ブログ内検索
アクセス解析
忍者ブログ [PR]