• ベストアンサー

ソケット通信(サーバ側)について

環境:Windows2000とWindows2000(サーバに見立てて) WinScok2にてサーバソケットAPを作ったのですが、 クライアントからの接続でタイムアウトエラーになります。 以前にPC側APとサーバAPでポートが同じでなければいけないと言われ修正したのですが、まだ接続できません。 以前の方にも言われたのですが、サーバAPを起動後にプロンプトからtelnet (リスンされたIP) (ポート番号)で起動すると、接続に失敗しました。とメッセージが表示されます。 サーバAPはaccept()で待っている状態です。 何か洩れている箇所があるのでしょか?

質問者が選んだベストアンサー

  • ベストアンサー
  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.2

>PC側APとサーバAPでポートが同じでなければいけないと言われ そんなことはないですよ。 Listenポートは指定しますが、クライアント側は、OSから割り当てられたものを 使うのが普通のやり方です。そうしないと困ることがあるはずです。 (Webサーバを稼動させていると、Webクライアントになれないとか...) >telnet (リスンされたIP) (ポート番号)で起動すると、接続に失敗しました accept以前に問題がありそうですね。 ソケットの生成(socket)、バインド(bind)、listen でエラーは出ていませんか? http://www.katto.comm.waseda.ac.jp/~katto/Class/GazoTokuron/code/socket.html

参考URL:
http://www.katto.comm.waseda.ac.jp/~katto/Class/GazoTokuron/code/socket.html
akira_akira
質問者

お礼

ありがとうございます。 ポート番号が違うため、接続できませんでした。

その他の回答 (2)

回答No.3

まずは、サーバ側APに問題があるのか、クライアントAPに問題があるのか切り分けるのが早道でしょう。 サーバAPなるものを起動した状態で、サーバ側のコマンドプロンプトから、 netstat -a と打ってみてください。以下のようなリストが表示されるはずです。 C:\Documents and Settings\tamamori>netstat -a Active Connections Proto Local Address Foreign Address State TCP Sirius:epmap Sirius:0 LISTENING TCP Sirius:microsoft-ds Sirius:0 LISTENING TCP Sirius:1025 Sirius:0 LISTENING TCP Sirius:1027 Sirius:0 LISTENING TCP Sirius:3541 Sirius:0 LISTENING TCP Sirius:5000 Sirius:0 LISTENING   :   :   : このリストに、あなたのサーバAPがlistenしているはずのポート番号は表示されていますか? (注意:80などのwelknown portは、httpなどのようにプロトコル名で表示されます。) ここまでOKなら、サーバAPは目的通り、accept()待ちになっていると考えて良いでしょう。 次に、同じくサーバ側のコマンドプロンプトから、 telnet localhost ポート番号 と打ってみてください。 つながりますか? というか、繋がるはずです。 ここまできたら、疑うのはクライアント側APまたは、クライアントマシンとサーバマシンを繋いでいる部分です。(ハード的に部分とソフト的な部分があります。) 参考まで。

akira_akira
質問者

お礼

ありがとうございます。 ポート番号が違うため、接続できませんでした。

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

待つのはlisten()では?

akira_akira
質問者

補足

デバックで見る限りではacceptのような気がします。

関連するQ&A