
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- ネットワーク 社内ネットワークの1台だけ接続できないときがある 4 2023/01/25 11:58
- UNIX・Linux raspberry piを使ったWebサーバー制作をしています、接続するネットワークを変更したときに 1 2023/01/09 15:57
- ネットワーク 自作のサーバーPCが自宅内のネットワークに接続できない 3 2023/01/24 16:58
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- ネットワーク ネットワーク構成図のアイコン素材のダウロードサイトでおすすめ教えてください 1 2022/06/03 05:09
- デスクトップパソコン 古ーいパソコン/Atheros AR2181 PCIe Gigabit LAN コントローラー 7 2022/09/07 12:58
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- Windows 10 インストールしたてのVirtualBoxの仮想マシンにDHCPで割り振られるIPアドレスにつきまして 1 2023/05/03 14:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excel vba グラフ データラベル...
-
C# using の有効範囲
-
C#でVB.NETのReplaceコマンドを...
-
c# ネットワークプログラム
-
条件によって別のクラスのイン...
-
ユーザーフォームのVBAエラー
-
FriendとPublicの違い。。。
-
VBA チェックボックスをオーバ...
-
エディットコントロールのイベ...
-
イベントにAddHandlerされてい...
-
VB.NETでクラスライブラリプロ...
-
エディットコントロールでEnter...
-
DataGridViewのセルに斜線を引...
-
ウィンドウの背景に画像を配置する
-
ダイアログクラスのコントロー...
-
継承したポインタ
-
Objective-c 画像処理
-
C++勉強中なんですが
-
個々の関数について継承してい...
-
delete演算子によるメモリ解放...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c# ネットワークプログラム
-
ユーザーフォームのVBAエラー
-
excel vba グラフ データラベル...
-
条件によって別のクラスのイン...
-
VB.NETで、DLLを頂いたんですが...
-
C# フォームのShow()のオーバー...
-
Eval関数を使いたい!ドキュメ...
-
c# nullは空集合として扱かって...
-
C# using の有効範囲
-
C# でフォームやクラスを利用...
-
MSDNのリファレンスの見方が分...
-
C#でVB.NETのReplaceコマンドを...
-
C#で別スレッドからメインform...
-
BCB5:フォームに自作のプロパ...
-
プロパティについて
-
c# でList<T>と似たものを作りたい
-
ConsoleApplicationから別プロ...
-
VBA チェックボックスをオーバ...
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
おすすめ情報