
No.3ベストアンサー
- 回答日時:
No.1です。
回答続編です。
とはいえ、こちらも難航中ですが。
(何となくTCP-Clientは判ってきたかなという感じですね)
>1秒間隔でポーリングして受信がある場合は受信を送信処理が
>ある場合は送信処理を1つのコネクションでさせる場合は
>どうすればいいのでしょうか。(c言語のselect関数相当)
…確か、Socketの方にはSelectを持っていた気がします。
調べてみてください。
しかし、一般的にポートは6万個しかありませんので。
大規模なアクセスをも想定する場合は、1メソッドでポイと
捨ててみてもいいような気もします。
でないとポートが利用人数分消費されます。
TCP/IPはどうも、永続的なセッション情報を元来あまり保証し
なさそうな雰囲気ですので、(FrameworkのTCP-Clientは
低レイヤーの切断情報などステータスをうまく取れない模様。)
きっと[Data.Length][Separetor][Data] というような、
RS-232Cのようなベタな「俺プロトコル」を適当につくり、
TimeOutベースで審査&そのたびにスレッドを捨てるという
やりかたでもいいんじゃないかなとも思えます。
>また、お勧めのサイトとかありましたら教えてください。
当方の情報源は。
1.VS2008のMSDN(ネットのは古い場合がある)
2.C#500の技とかいう書籍
3.海外のWebサイト
ですね。
日本は情報があまり見当たりません。
Code Projectというサイトあたりを中心に物色しています。
私は、ClickOnceでTCP-Clientを配布して使えないかなという
実験中で。今日のところは、HTTPサーバとおしゃべりできた程度
です…
度々のご回答誠にありがとうございます。
送受信のslecet関数は確かにC言語の時には使用していましたが、c#ではないような気がします。
そこで受信処理と送信処理をそれぞれ別スレッドで処理させようと作っていたのですが、コネクションを確立したソケットをそれぞれのスレッドでどのようにすれば(共有)いいのか試行錯誤中です。
それにしても参考になるサイトが少ないですね。
No.4
- 回答日時:
No.1です。
当方、本日はほとんどC#は進捗なしなのですが…
んー、Socketには、SelectメソッドもPollメソッドもあるような
気がします。
MSDN Libraryですぐに見つかりましたけど…。
ま、.NETはFrameworkのクラス構造に慣れるまでに一苦労ですね。
たかだか文字列処理でも、Stringか、Encodingか、Convertか。
どこにあるのかすぐに探しちゃいますので(笑)
最近の言語は、コンポーネントを使いこなすのが主流ですので。
こういう辞書で単語を探すようなスタイルが一般なのかも
知れませんね。
プログラムによっては、恐ろしく短いコードで実現でき、かつ
速度もモノによってはC++ + MFCよりも速いらしいので。
侮れないのですが。
No.1
- 回答日時:
然るに。
まさに、あなたと同じ部分に着手している者です。(笑)
私は一応、他言語のWinsockの通信程度は作成したことがありますが、
C#では…今のところ完璧なものはできていません。
(独自プロトコルの某サーバを構築しようとたくらんでおります。)
さて。
質問の解ですが。
Microsoft様がおっしゃるには
「普通のTCP/IP通信のプログラムを作る時に、ベラボーに速い
プログラムを一からゴリゴリ作り、最高のパフォーマンスを
得るにはSocketを。
普通のものでよければ、TCP-Listner/TCP-Client/UDP-Listenerを
利用した方がいいよ」とヘルプに書いてありました。
今覗いてみている雰囲気では、TCP~のほうがライブラリ内の
メソッドやエラー制御などが簡略化されているようでして。
Socket~のほうは、IPv4以外のプロトコルも考慮していそうで、
最初から手を出すにはちょっと難しそうです。
作ったことがなければTCP~から作ったほうがいいようです。
ちなみに、私は同じところを着手していて。
…どうも、Listener周りのスレッド&例外のところがうまくいかない
のでいろいろ試行錯誤中です…。
以上でいかがでしょうか?
私は、
ご回答ありがとうございます。
私は、C言語でソケット通信プログラムを作成したことがあるので
Socketの方を選択しようかと思います。
最初は敷居が低そうなTCP~で作っていたのですがyama-taku様と同様の
辺りでうまくいかなくて挫折しました。
それから、1秒間隔でポーリングして受信がある場合は受信を送信処理がある場合は送信処理を1つのコネクションでさせる場合はどうすればいいのでしょうか。(c言語のselect関数相当)
また、お勧めのサイトとかありましたら教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
条件によって別のクラスのイン...
-
C#で別スレッドからメインform...
-
C#でVB.NETのReplaceコマンドを...
-
ユーザーフォームのVBAエラー
-
c# ネットワークプログラム
-
イベントにAddHandlerされてい...
-
VB.NETでのEnumの使用について
-
ボタンのオーナードローについて
-
既定のコンストラクタがない?
-
[MFC] CWnd::MessageBoxの警告...
-
特定のビューへのポインタ取得...
-
(UWSC) 「#32770」の意味わかり...
-
FriendとPublicの違い。。。
-
DebugクラスとTraceクラスの違い
-
VC++ リストボックスにデータを...
-
C#で定数クラスをシングルトン...
-
DataGridViewのセルに斜線を引...
-
質問です!とても基本的なこと...
-
VC++ 7.1 で メインウィンドウ...
-
【C++】vectorについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
条件によって別のクラスのイン...
-
c# ネットワークプログラム
-
ユーザーフォームのVBAエラー
-
excel vba グラフ データラベル...
-
C# フォームのShow()のオーバー...
-
VB.NETで、DLLを頂いたんですが...
-
c# Equalsメソッドについて
-
C# using の有効範囲
-
C#でstop()が使えない。
-
C#でVB.NETのReplaceコマンドを...
-
Eval関数を使いたい!ドキュメ...
-
VBA チェックボックスをオーバ...
-
FriendとPublicの違い。。。
-
イベントにAddHandlerされてい...
-
既定のコンストラクタがない?
-
ダイアログ表示時にチェックボ...
-
(UWSC) 「#32770」の意味わかり...
-
【ASP.NET】 独自で作成したク...
-
エディットコントロールでEnter...
-
クラスのアドレスを引数として...
おすすめ情報