- 締切済み
クライアント側のポート番号を指定しての通信
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- askaaska
- ベストアンサー率35% (1455/4149)
やったことないけど オリジナルのSocketOptionsを作って ポートを固定化してはどうかしら。 SocketImplのAPIとかみると localportがあるから何とかなりそうじゃない?
関連するQ&A
- クライアント側のポート番号
ネットワークの勉強を始めたばかりの者です。 ポート番号に関する本で、HTTPポートに関して次のように書いてありました。 「HTTPポートは、WebブラウザでWebページを閲覧するときに使用される「HTTPプロトコル」を用いて通信を行う際にデータが通過するポートです。 HTTPプロトコルでは、通信の際だけ80番のHTTPポートを開き、通信が完了するとポートは閉じます。 例えば、あるWebページをWebブラウザに表示するにあたり、表示されるまでは、そのWebページのデータを受信している状態なので80番ポートは開いていますが、Webページデータを完全に受信し終わり、Webブラウザに表示されたら80番ポートは閉じます。 つまり、一回の通信毎に80番ポートを開けたり閉じたりを繰り返しています。」 私は、変だと思いました。 私は、クライアント側のポート番号は、その場で適当な番号が割り当てられるものだと思っているからです。 上の引用の中で、80番というWell-Knownポートで受信しているという話は解せなのです。 どう読んでも、上記の引用部分はクライアント側の話なのです。 (サーバ側はクライアント側(ブラウザ)からいつ要求されるかわからないから、「開けたり閉じたり」ということはないと思うのです。) http://www.mm-labo.com/computer/tcpip/ipaddress/portsort.html このページにも、「クライアント側で使用するポート番号は各OSが動的に割り当てる」と書いてあります。 私がしている勘違いはなんでしょうか。
- ベストアンサー
- その他(インターネット接続・通信)
- サーバからクライアントにポート番号を指定する方法
java初心者です。 現在javaを使ってサーバとクライアントのsocketプログラムを作っています。 動作としてはサーバ側がクライアントに対して接続するポートを指定し、以後クライアントがサーバに対して通信を行う際には指定されたポート番号を使って通信を行うような動作をさせたいのですがうまくいきません。 そのため、みなさんの知恵を拝借したいのですが、アドバイス等頂けないでしょうか。 また、javaでは実現不可能だとするのでしたら、その理由も詳しく教えていただけると幸いです。 どうぞよろしくお願いします。
- ベストアンサー
- Java
- Winsockでクライアントのポート番号を設定したいです
環境はWin2000,VC++6.0,MFC,ダイアログベースです Winsockではサーバ側のポート番号を指定しますよね。 クライアント側のポート番号を設定したいのですができますでしょうか? acceptされるポート番号を一定にしなくてはならない状況なのでよろしくお願いします。
- ベストアンサー
- C・C++・C#
- 通信する際なぜポートをが必要なのか
ポートについて以下の認識で正しいか教えてください。 ・基本的にTCP、UDPの通信は通信相手のIP+ポートで接続しにいく。 ・ルータ等でポートを塞いでいた場合は、上記の通信はすべてはじかれる。 ・すべてのポートがふさがっているPC同士は直接通信することが出来ない。 また質問なのですが、クライアント側は通信するときにどこかポートは空けなくてもいいのでしょうか。 つまり、通信しにいけるが、通信を受け付けることが出来ないということでしょうか。 ポートを空けなくていい場合、サーバ側はどうやってクライアントのあるプログラムにあて先を指定してデータを送るのでしょうか。
- ベストアンサー
- ネットワーク
- クライアントPCでの使用ポート番号について
NWのポート番号について調べていたところ 「ウェルノウンポート番号 (0~1023)はサーバのアプリケーションに割り当てられ、動的・プライベート ポート番号 (49152~65535)はサーバとのプロセスに応じクライアントのアプリケーションに動的に割り当てられます。」と記述してありました。 そこでUDP68番ポート(IPアドレス払い出しのクライアント側用)についてご教示ください。 68番ポートはウェルノウンポート番号にあたるのでサーバーのみが 使用し、クライアントPCは動的・プライベート ポート番号を使用すると認識しているのですが、ウェルノウンポート番号はクライアント側でも使用するのでしょうか?
- ベストアンサー
- ネットワーク
- サーバプロセスとクライアントプロセスの通信
サーバプロセスとクライアントプロセスの通信がどのように行われているのか確認させてください。 現在、以下の認識でいます。 (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】に対して送信されるため。 上記について、何らかの仕組みがあるのでしょうか。 よろしくお願いします。
- ベストアンサー
- ハードウェア・サーバー
- ポート番号について教えてください
ポート番号において (前者)IPマスカレード機能において、1つのグローバルIPアドレスで複数のコンピューターが同時に通信を行うため、ポート番号をプライベートアドレス(PC)ごとに適当に割り当てて、通信のつどポート番号を変換し、限りあるグローバルIPアドレスの枯渇を防ぐ場合と (後者)ポートを指定し、識別番号をつけることによってどのアプリケーションでデータを受け取るかを決める場合と 同じ「ポート番号」という言葉が使われていますが、この違いはなんなのでしょうか。 自分で考えてみたのですが、 前者は、IPマスカレード機能はルーターの1つのグローバルIPアドレスを複数のポート番号に割り当てることによりLAN上の複数のプライベートIPアドレスを利用できるようにしたもので 後者は、LAM側にあるPCのプライベートIPアドレスに複数のポート番号を割り当てて同時に複数のアプリを動かすことを実現している違いでしょうか。 つまり、何に対してポート番号を割り当てるかの違いがあるかということです。 また、この2つはルーターの設定で行うと考えてよいのでしょうか。 ややこしい質問かもしれませんが、どう把握したらよいか教えてください。
- ベストアンサー
- ネットワーク
- TCP/IP通信型プログラムです。 サーバのポート番号をクライアントが
TCP/IP通信型プログラムです。 サーバのポート番号をクライアントが取得するプログラムで、 while(1) { saddr.sin_port=htons(port); port++; fprintf(stdout, "%d\n", port); } のようなのをプログラムのどこに入れれば よいのでしょうか?
- ベストアンサー
- C・C++・C#
- クライアントサーバ型アプリ製造時のポート番号は?
初心者的質問で申し訳ありません。 クライアントサーバ型のアプリケーションを製造するとき、サーバ側のプログラムに固定のポート番号を割り当てないと、通信ができないですよね? 例えば、40000にしよう!と決めたとして、サーバPCは、40000=(製造した)サーバプログラムというのをどうやって認識するのでしょうか?サーバPC側での定義をするのですか?
- ベストアンサー
- その他(プログラミング・開発)
お礼
検討してみるよ サンキュー