tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルWinsockでTCPがつながらない
記事No12357
投稿日: 2008/05/25(Sun) 16:19
投稿者コスモス
初めて利用させて頂きます。コスモスと申します。
環境はXP,VB6を利用しております。
かれこれ2年間解決できない問題がありまして、
皆さんのお知恵をお貸ししてほしいとおもいます。

WinsockのTCPを用いたアプリケーションを作っております。
ソフトを2重起動して自分と自分で接続のテストをすればつながるのですが、
自分と他人の接続をすると全くつながりません。
サーバ側にはコネクションリクエストイベントさえ発生しません。
サーバのListenのあとクライアントでconnectしても、
フリーズじゃないですが双方とも何も起こらない状態が続きます。

以下のコードは極力簡略化したチャットのアプリケーションなんですが、
2重起動して自分と自分で接続するとちゃんとチャットができます。
しかし他人と接続しても全くつながりません。
なお、コード中のoption1はサーバ・クライアントの選択用のオプションボックス、
command1は「接続」ボタン、command2は「発言」ボタンです。
text1にはポート番号、text2にはIPアドレスが入っております。

Private Sub Command1_Click()
If Option1(0).Value = True Then
    Winsock1.LocalPort = Text1.Text
    Winsock1.Listen
Else
    Winsock1.RemotePort = Text1.Text
    Winsock1.RemoteHost = Text2.Text
    Winsock1.Connect
End If
End Sub

Private Sub Command2_Click()
Winsock1.SendData Text4.Text
Text3.Text = Text3.Text & vbCrLf & Text4.Text
Text4.Text = ""
End Sub

Private Sub Winsock1_Connect()
Command2.Enabled = True
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close 'この行が無いとなぜかエラーになる
Winsock1.Accept requestID
Command2.Enabled = True
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim GotData As String
Winsock1.GetData GotData
Text3.Text = Text3.Text & vbCrLf & GotData
End Sub

それともうひとつお伺いしたいことがあります。
どこかのサイトのチャットに入室すると、192.168…とはまた違った
入室者のIPアドレスが表示されることがあると思いますが、
巷のチャットで表示されるIPアドレスを使うべきなのか、
IPconfigで得られるIPアドレスを使うべきなのか、
お教えいただけたらと思います。

様々なVBのサイトで調べに調べましたが解決できません、
どうか皆様のお力添えをお願いしたいと思います。

[ツリー表示へ]
タイトルRe: WinsockでTCPがつながらない
記事No12395
投稿日: 2008/05/28(Wed) 01:55
投稿者Starfish

> WinsockのTCPを用いたアプリケーションを作っております。
> ソフトを2重起動して自分と自分で接続のテストをすればつながるのですが、
> 自分と他人の接続をすると全くつながりません。
> サーバ側にはコネクションリクエストイベントさえ発生しません。
> サーバのListenのあとクライアントでconnectしても、
> フリーズじゃないですが双方とも何も起こらない状態が続きます。

 クライアント側でErrorイベントが発生しているのではないかと思います。
エラーの内容を調べてみてください。

> それともうひとつお伺いしたいことがあります。
> どこかのサイトのチャットに入室すると、192.168…とはまた違った
> 入室者のIPアドレスが表示されることがあると思いますが、
> 巷のチャットで表示されるIPアドレスを使うべきなのか、
> IPconfigで得られるIPアドレスを使うべきなのか、
> お教えいただけたらと思います。

 192.168.・・・は、プライベートIPアドレス(ローカルIPアドレス)です。
もう一つのほうは、グローバルIPアドレスです。

 同じ会社内とか自宅内とかであれば、プライベートIPアドレスで
いいですが、インターネットを介しているとグローバルIPアドレス
でないといけません。ただし、その場合は、サーバー側はインター
ネットから接続できるようにルータ等で設定されていないと接続
できませんが。

[ツリー表示へ]
タイトルRe^2: WinsockでTCPがつながらない
記事No12398
投稿日: 2008/05/28(Wed) 21:16
投稿者コスモス
Starfishさん、ご返信誠にありがとうございます!!
感謝の言葉もございません!

>  クライアント側でErrorイベントが発生しているのではないかと思います。
> エラーの内容を調べてみてください。

おっしゃるとおり、エラーイベントが発生しておりました。
ナンバーとデスクリプションをメッセージボックスで表示させたところ、
10061 接続が受け付けられませんでした
とのことでした。

それから、グローバルIPとプライベートIPについて
お教えくださりありがとうございます!
どうやら結構基本的なことのようで・・・。
お恥ずかしい限りです。
現在、グローバルIPアドレスで接続を受け付けられるよう
ネットで設定の方法を調べに調べております。
私の使っているモデムでの設定方法の例がなかなか無くて、難儀している所です。

主にこちらのホームページ
http://y-kit.jp/saba/xp/nattable.htm
を見ながら設定を行っております。
スタティックIPマスカレードという言葉はルータの設定画面を
さがしても探しても見つかりませんでしたが、
NATエントリという項目がありましたのでそちらをいじりました。
「LAN側ホスト」に固定IPアドレス、「プロトコル」をTCP、
「ポート番号」をanyにし、この設定を追加しました。

という感じで設定して作成中のプログラムの接続のテストを行っているのですが、
いまだに「エラー10061 接続が受け付けられませんでした」が出ます。

もし、まだつながらない原因と思われることがありましたら、
誠に図々しいですがどうかお教えいただきたいと思います。

[ツリー表示へ]
タイトルRe^3: WinsockでTCPがつながらない
記事No12400
投稿日: 2008/05/29(Thu) 00:53
投稿者Starfish

> という感じで設定して作成中のプログラムの接続のテストを行っているのですが、
> いまだに「エラー10061 接続が受け付けられませんでした」が出ます。
>
> もし、まだつながらない原因と思われることがありましたら、
> 誠に図々しいですがどうかお教えいただきたいと思います。

 10061は、相手には届いているが相手から拒否された場合のエラーです。

 相手が、Listen を発行していない、か、ルータの設定が悪くて
相手に届く前にルータから拒否されているかだと思いますが。

[ツリー表示へ]
タイトル解決いたしました!
記事No12412
投稿日: 2008/05/31(Sat) 15:46
投稿者コスモス
Starfishさん、アドバイスのおかげで見事に2年来の問題が解決しました!
本当にありがとうございます、このご恩はきっと忘れません!!

ルータの設定をきちんと直したところ、
きちんと外部からの接続を受け付けることができました。
おっしゃるとおり、ルータが外からの通信を通さなかったみたいです。
モデムやルータ、自宅サーバについて解説したサイトを
いろいろ調べてまわったところ、解決にたどり着くことができました。

私のプログラムを待っていてくれる人たちにようやく応えることができます。
このたびは本当にお世話になりました。

[ツリー表示へ]
タイトルRe: 解決いたしました!
記事No12413
投稿日: 2008/06/01(Sun) 19:49
投稿者Starfish
> 私のプログラムを待っていてくれる人たちにようやく応えることができます。

 一般的には、プロバイダから提供されるIPアドレスは、固定では
ありません。しばらく使わないと、IPアドレスは変わります。
クライアントから確実に接続するには、サーバ側で以下のような
サービスに入る必要があります。

 たとえば、@niftyなら

・@nifty 固定IPサービス
 http://www.nifty.com/staticip/

・@nifty ダイナミックDNS
 http://www.nifty.com/ddns/

[ツリー表示へ]
タイトルRe^2: 解決いたしました!
記事No12414
投稿日: 2008/06/01(Sun) 21:55
投稿者コスモス
最後までわざわざいろいろ教えくださり、本当に感謝の言葉もございません。
これからの参考にいたします!

[ツリー表示へ]