• 締切済み

サーバソケットで待受ポートと違うポートで通信可能?

192.168.0.1のTCPサーバソケットの12345ポートで待ち受けたとします。 そこに192.168.0.2の23456ポートから接続が来た場合には「192.168.0.1:12345⇔192.168.0.2:23456」というソケットが作成され、(PG次第ですが)引き続き12345ポートで待ち受けることになるかと思います。 上記例において、23456ポートから接続が来た場合に「192.168.0.1:34567⇔192.168.0.2:23456」といった、待ち受けポートと異なるポートとのソケットを作成することはできるのでしょうか? 私はできないという認識なのですが、できると言う人がいるので確認したいと思い質問します。

みんなの回答

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.2

同一のプログラムで、プロセス的には一つということであればできません。 待受ポートごとにプロセスを別にすれば可能だと思いますが、クライアント側からIPアドレス指定で任意のポートということであればできないでしょう。 複数のポート番号を固定するのであればApacheのように設定次第で可能なものもあります。 TCP/IP端末では自端末でポート番号ごとに待機しているプロセスは複数ありますが、それらのポートを使用しているのは異なるプログラムであることがほとんどです。 Windowsならコマンドプロンプトで「netstat」というコマンドを使用するとポート番号を含んだネットワーク接続の状態を確認できます。

chickenheadkun
質問者

補足

>待受ポートごとにプロセスを別にすれば可能だと思いますが、クライアント側からIPアドレス指定で任意のポートということであればできないでしょう。 プロセス別でできる場合のイメージが沸きません。 どのような流れとなるのでしょうか? >複数のポート番号を固定するのであればApacheのように設定次第で可能なものもあります。 こちらもイメージが沸きません、どのような流れになるのでしょうか?? レスが遅くてすいません(^_^;)が、よろしくおねがいします

  • agehage
  • ベストアンサー率22% (2540/11304)
回答No.1

出来ないと思う のですが説明文が(日本語的な意味で)難解のため質問内容が理解できていないかも。

chickenheadkun
質問者

補足

日本語すいません(苦笑) スマホで慌てて入れているもので(それだけではないかも知れませんが💦) SVが12345で待ち、CLが23456で繋ぎにきた場合に「SV側PGのソケットでSV側を12345以外のポート、CL側を23456」ができるか? ということになります CL側PGのソケットは気にしません。(が、SV側と連動しないとおかしいことになりますよね?)

関連するQ&A

  • ソケット通信 同じポート番号でn対1はできない?

    Windows2000クライアントが複数あり、サーバソケット用APを作成したのですが、1対1では確認できたのですが、 n対1は、手法が変わるのですか? 疑問: PCとサーバ間でのソケット通信にて、相互に同じポートでなければいけないので、複数のPCからサーバソケット用AP で決めたポートに繋げに行くことが可能なのですか?

  • サーバプロセスとクライアントプロセスの通信

    サーバプロセスとクライアントプロセスの通信がどのように行われているのか確認させてください。 現在、以下の認識でいます。 (1)TCPコネクション  サーバ側ポート番号【23】と、それぞれのクライアント側ポート番号【****】との間に確立する。   (2)通信処理  クライアント側のプロセスAは、サーバ側のプロセスA(子)  クライアント側のプロセスBは、サーバ側のプロセスB(子)  クライアント側のプロセスCは、サーバ側のプロセスC(子)  との間で通信を行う。 ※添付の図も参照ください。 認識に相違ないでしょうか。 サーバプロセスとクライアントプロセスの通信を行う際、プロセス間(ポート間?)の通信には、IPアドレスとポート番号を組み合わせたソケットを用いるため、サーバ側ではソケット【192.168.0.1:23】を1個作成し、クライアント側ではソケット【192.168.0.2:****】をプロセス分作成すると考えています。 このとき、クライアントプロセスAはサーバプロセスA(子)と通信を行いますが、サーバ側で作成されているソケットは1つであるため、どの子プロセスに対してデータをせばいいのか判別できないのではないかと考えています。 ※クライアントプロセス(A、B、C)はソケット(サーバ側)【192.168.0.1:23】に対して送信されるため。 上記について、何らかの仕組みがあるのでしょうか。 よろしくお願いします。

  • Javaのソケット通信について初歩的な質問です

    私はいま、独学でJava言語の勉強をしています。 おそらく初歩的な質問ですが、いくら検索をしても見つからなかったため、質問させていただきます。 JavaでTCPを使ってソケット通信をする際の質問です。 WiFiのアクセスポイントAとアクセスポイントBがあるとします。 クライアントのアプリケーションが、アクセスポイントAからインターネットに接続し、サーバのIPアドレスとポート番号を使ってソケットを作り、サーバとTCP通信をしているとします。 このとき、クライアントが動いて、アクセスポイントBに接続したとします(接続が自動で切り替わる)。 このような場合でも、サーバとクライアントのコネクションは保っていられるのでしょうか? もしくは、このような場合でもコネクションを保つ方法はあるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • 通信する際なぜポートをが必要なのか

    ポートについて以下の認識で正しいか教えてください。    ・基本的にTCP、UDPの通信は通信相手のIP+ポートで接続しにいく。  ・ルータ等でポートを塞いでいた場合は、上記の通信はすべてはじかれる。  ・すべてのポートがふさがっているPC同士は直接通信することが出来ない。    また質問なのですが、クライアント側は通信するときにどこかポートは空けなくてもいいのでしょうか。  つまり、通信しにいけるが、通信を受け付けることが出来ないということでしょうか。  ポートを空けなくていい場合、サーバ側はどうやってクライアントのあるプログラムにあて先を指定してデータを送るのでしょうか。

  • 異なる言語間でのソケット通信について

    簡単なネットワークプログラムを作成して、ソケット通信の確認をしています。 クライアントとサーバが両方ともにC++の場合と、両方ともにJavaの場合で、正常に通信が行われていることは確認しました。 そこで、クライアントでC++のプログラムを動かし、サーバでJavaのプログラムを動かしてみたのですが、うまくいきませんでした。 (ポート番号を合わせたので、相互接続は出来てるみたいですが、データが渡ってきませんでした。OSはクライアント/サーバともに、Windowsです。) 言語が異なる場合の、ソケット通信について良いサイトをご存知でしたら、教えていただけないでしょうか?

    • ベストアンサー
    • Java
  • vb2010でソケット通信を使いたいのですが

    はじめまして。 vb2010でソケット通信を使いたくて、今TCPサーバーを作っています。 クライアント側から受信した瞬間にサーバー側から返信というのは可能でしょうか。 受信したタイミングで接続が切れてしまって困っています。 初めてソケット通信に触れてイマイチ分かってないので説明がうまくいきませんが、 どなたかわかる方がいらっしゃいましたらご回答よろしくお願いします。

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

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

  • TCP通信

    OS:Win2000、VisualBasic.netで開発しています。 現在TCP通信のプログラムを製造しています。 TCPサーバとTCPクライアントのテストアプリケーションを作成し、接続テストを行っているのですが、 サーバとクライアントの接続、データ送受信の確認はできました。 しかし、一度クライアント側から接続を切断(ソケットを消去)し、 再びソケットを生成してコネクト要求を出しても接続が確立できません。 このときサーバ側はなにも操作していません。 終始接続待機状態にしてあります。 ソースがないと分かりにくいかもしれませんが、 何か思い当たることがある方、アドバイスよろしくお願いします。

  • ソケット通信のデバッグ用ソフト

    こんにちは。 VC++6.0でソケット通信を使用してサーバーとクライアント間で データのやり取りをするプログラムを作成しています。 サーバーから送られたデータを確認できるソフト (つまり、指定のポートのバッファの状態を見れるソフト) を探しているのですが、なかなか見つけれません。 そのようなソフトはありますでしょうか? よろしくお願い致します。

  • ポート単位の通信確認の方法とは?

    オンプレミス環境やクラウドなど問わないのですが、 個別にサーバを構築し、そのサーバ間の疎通確認を行う方法として確認したいことがります。 各サーバ間は、送受信する通信ポートは一意に指定して、それ以外のポート、指定外のプロトコルでの通信は破棄するように設定します。 その通信設定した内容が問題ないか、テストとしてどんなことをされてるんでしょうか? ICMPを許可していれば、ping試験ですが、TCPでの指定ポートのみの通信許可にしているので、不可かと思ってます。 設定例(1) Aサーバ→BサーバへのTCP ポート1000番のみ通信OKにしている。 設定例(2) Bサーバ→Aサーバは、レスポンスのみOKにしている といった感じになってます。 要点としては、 ポート指定して通信が通る確認の方法って何があり、どんな確認手段になりますでしょうか? telnetのポートしてでの確認もできるみたいなことがWEBにありましたが、結果どうなれば良いかまで良くわからず。 また、通信ができない試験も必要かと思いますが、そちらについてもアドバイスをお願いします。 経験が浅いので申し訳ないですが、お知恵を貸していただければと思います。 よろしくお願いします。