TCPプロトコルで接続をやろうと思っているんですが、
RemoteHost のところで、
コンピュータ名やIPアドレスを指定すると接続できるのに、
URLを指定すると、接続できません。
ソースは以下のとおりです。
Private Sub cmdSetsuzoku_Click()
TCPC.Close
TCPC.RemoteHost = "URL"
TCPC.RemotePort = 1001
TCPC.Connect
End Sub
ちなみにUDPプロトコルで、
RemoteHost をURLを指定すると接続できたので、
URLの間違いではないと思うんですが、どうしてなんでしょうか?
TCPPCがなんのコンポーネントか書いていただかないと、答えられないような
気がします。
Winsockコントロールのことだとして書きます。
RemoteHostプロパティにURLは指定できません。
UDPプロトコルで接続が確認できたとのことですが、どのように確認されたのでしょうか?
説明不足で申し訳ありません。
TCPCはWinsockコントロールのことです。
UDPプロトコルで接続が確認できたとのことですが、
どのように確認されたのでしょうか?
UDPプロトコルで、RemoteHostプロパティにURLを指定し、
"チャット" アプリケーションを作成し、
互いに文字の送受信ができましたが、
TCPプロトコルでは、接続できませんでした。
失礼しました
URLでもOKですね。勘違いしてました。
#正確にはURLではないのですが。
確認したいのですが、URLはどのようなURLを指定しているのでしょうか?
ダイナミックDNSで取得したURLです。
ちなみに、グローバルIPアドレスをRemoteHostに、
設定してもダメでした。やっぱり、無理なんでしょうか?
接続できないってエラーメッセージか何かでてますか?
あるいはセキュリティー関係の設定でブロックしているとか・・・
文字を送信しようとすると、
「指定したトランザクションまたは要求のプロトコル
または接続状態に問題があります。」とエラーメッセージがでます。
セキュリティー関係の設定でブロックしているとは
どういうことなんでしょうか?
初心者な者ですみません。
うろ覚えですが、たしかTCPは接続と送信はコード上で区別していて、
UDPはコネクションレスでデータを送信できたような・・・
あっつまり、UDPで通信できたプログラムのプロトコル設定をそのまま
TCPに置き換えただけじゃ動かないので、TCPプロトコル用にプログラムが
直っているかを見た方がいいです。
ちなみにセキュリティー関係を指摘したのは、Firewallソフトやルータが
接続をブロックしていることもある(環境による)ので、その場合はFirewall
を経由させないように接続状態を見直すしかないです。
>ちなみに、グローバルIPアドレスをRemoteHostに、
とありますが、最初の投稿で
>コンピュータ名やIPアドレスを指定すると接続できるのに、
となっていましたが、
最初の投稿の接続できたIPアドレスと、その後の接続のできなかったグローバルIPアドレスは違うものと考えていいですか?
その場合、接続のできたIPアドレスはローカルのIPアドレスですか?
また指定したURLはDDNSで取得したものとのことですが、たとえば
Winsock1.RemoteHost = "www.example.co.jp"
のようにドメインを指定しているんですよね?
それからTCPとUDPについてはご存知でしょうか?
もしご存知ない場合は勉強をされてからプログラムをされたほうがいいと思います。
#とはいいつつも私もまだ勉強中の身でして。
奈々氏さんうにぃさん返答ありがとうございます。
接続のできたIPアドレスはローカルのIPアドレスのことです。
>Winsock1.RemoteHost = "www.example.co.jp"
>のようにドメインを指定しているんですよね?
そうです。
>それからTCPとUDPについてはご存知でしょうか?
TCPとUDPでのプロトコルの違いは理解しているつもりです。
>文字を送信しようとすると、
>「指定したトランザクションまたは要求のプロトコル
>または接続状態に問題があります。」とエラーメッセージがでます。
TCPでデータを送信する場合、送信前にコネクションを確立しないと
送信できませんよね。
エラーが起きているのは送信時でなくて、接続時にコネクションが確立
できていないのではないですか?
まずStateプロパティの値が0(sckConnected)になっているか確認してみて
ください。
まず始めに。
ローカルIPアドレスを指定した場合には接続ができているとのことなのでプログラムに問題はないのではないかと考えられます。
おそらくネットワークの問題ではないでしょうか。
テストされている環境は、どの様なネットワークの構成になっていますでしょうか?
通信の相手は同一ネットワークのPCですか?それとも自PCですか?
気になるのはUDPの時は接続ができた、ということなのですが。
自PCです。
ええ〜と・・・
ダイナミックDNSで取得したとありますが、では、通信相手は
インターネット越しのブロードバンドルータを超えたLAN側の
マシンと言うことですか?
自PC側だけではなく、相手側の問題も考えられます。
で、TCPがダメでUDPはOK・・・とありますが、その部分
は、ただ単にルータのフィルターかファイアウォールの設定で、
ご使用になっているポートの設定が、UDPはブロックされてい
ないが、TCPはブロックされていた・・・
と言うことではないでしょうか?
ネットワークの構成と各々のルータの設定が解らないと完全な
解決にはならないと思います。
ご検討下さい。
以上。
ツイート | ![]() |