- - PR -
C(WINSOCK)で書かれたクライアントとC#で書かれたサーバのソケット通信
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-06-21 09:34
甕星さん、一郎さん、レスありがとうございます。
C#で作ったクライアントとは正しく通信が出来る →はい、できています。というか、SDKの非同期クライアント・サーバーの使用例 をまんまパクっていたりするのです(^^;;; 「クライアントがCでサーバーがC#で書かれた」ということが問題のように思われているようですが、クライアントは、正しくプロトコルを実装したサーバーとは正しく通信が出来ることは判っているんですか? サーバーは、正しくプロトコルを実装したクライアントとは正しく通信出来ることは判っているんですか? →原理的な部分への造詣は思いっきり浅いです、はい。 とにかくサンプルを元に一から勉強している状態です。 | ||||||||||||
|
投稿日時: 2004-06-21 10:36
お騒がせしております。半人前です。
この返答、変ですね。 コールバック関数がデリゲート宣言をしなければならないと早とちりして
と言ってしまいました。失礼しました。 | ||||||||||||
|
投稿日時: 2004-06-21 11:11
半人前です。自己レスです。
while (true) { allDone.Reset(); Console.WriteLine("接続待ち状態..."); listener.BeginAccept(new AsyncCallback(AcceptCallback),listener); // ここで止まったまま ※ allDone.WaitOne(); } allDoneはManualResetEventのインスタンスです。 WaitOneは、「シグナルを受信するまで現在のスレッドをブロック」とありますので、この動作(※)は 【シグナルの受信を待ったまま、すなわち、データが来ていない】 と判断してしまっていいものでしょうか? | ||||||||||||
|
投稿日時: 2004-06-21 15:57
半人前です。お騒がせしております。
その後の調査で、ちゃんと受信できていることが分かりました。 レスくださりましたみなさん、申し訳ありません。m(_)m デバッグでプレイクポイントの位置を「(ACCEPT後に行っている)文字列判定の処理」 にセットしたところ、ちゃんとデータが取れている事が分かりました。 すべては私のタコに起因する次第です、失礼しました。 | ||||||||||||
|
投稿日時: 2004-07-15 11:20
半人前です。お騒がせします。
件名の件についてアドバイス頂きたく・・。 この組み合わせ(CクライアントとC#サーバ)による通信は、同じPC上では動作 しないのですが、その原因として何が考えられるでしょうか? 何卒よろしくお願いします。 | ||||||||||||
|
投稿日時: 2004-07-15 12:38
何がどう動かないのですか? 接続できないのですか? 送信しても届かないのですか? 受信できないのですか? 単にIPアドレスが間違っているだけではないですか? 単に、ポート番号が間違っただけではないですか? 単に、サーバーが立ち上がっていなかっただけではないですか? これだけの情報では、なんともいえません。 もっと詳細な情報を提示してください。 | ||||||||||||
|
投稿日時: 2004-07-15 13:42
大変失礼しました。m(_)m
接続自体ができていません。サーバのacceptのところでブレイクポイントを設定して 様子を伺っているのですが全く反応がありません。 ちなみに、クライアント・サーバ双方ともIPアドレスやポートの設定、サーバアプ リの立ち上がりも問題ありません。 クライアントアプリでは送信時にデータをコンソールにも吐いており、挙動だけ見れ ば動作している、と判断しています。 クライアントアプリを他のマシンに持っていって動作させると正常に送受信されます。 以上です。 | ||||||||||||
|
投稿日時: 2004-07-15 17:11
お騒がせしております。半人前です。またやってしまいました。。。(((^^;
クライアントアプリは別な人間が作成しており、仕様が変更(コマンドライン引数で サーバーのアドレスやポートを指定)されていた事が伝わっておりませんでした。 情けない・・・。 かずくんさんレスありがとうございました。 |