• ベストアンサー

Winsockでクライアントのポート番号を設定したいです

環境はWin2000,VC++6.0,MFC,ダイアログベースです Winsockではサーバ側のポート番号を指定しますよね。 クライアント側のポート番号を設定したいのですができますでしょうか? acceptされるポート番号を一定にしなくてはならない状況なのでよろしくお願いします。

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

  • ベストアンサー
回答No.1

実際にやった経験はないのですが、仕様からは、 connect()の前にbind()しておくと、できるはずです。 (通常はクライアントサイドでは不要=サービスプロバイダが勝手に空きポートを使用する、とされているbind()を明示的におこなうということです。) 参考まで。

関連するQ&A

  • winsockのポート指定について

    winsockを使ったUDPのプログラムを作成しています。開発環境はVC.NET/win2000です。 UDPサーバで受信側のプログラムとして、   ・sin_port に受信ポート番号を設定   ・socket   ・bind という流れでソケット生成をしています。 上記の流れを1プロセスで1度行って、1プロセスにつき1ポートに対応した メッセージを受信しているのですが、 1プロセスで複数ポートを対象に受信を行うことは可能なのでしょうか?   ・ポート番号を複数指定する   ・ソケットを複数生成する など・・・  方法がわかりません。 すみませんが回答をよろしくおねがいします。

  • クライアントPCでの使用ポート番号について

    NWのポート番号について調べていたところ 「ウェルノウンポート番号 (0~1023)はサーバのアプリケーションに割り当てられ、動的・プライベート ポート番号 (49152~65535)はサーバとのプロセスに応じクライアントのアプリケーションに動的に割り当てられます。」と記述してありました。 そこでUDP68番ポート(IPアドレス払い出しのクライアント側用)についてご教示ください。 68番ポートはウェルノウンポート番号にあたるのでサーバーのみが 使用し、クライアントPCは動的・プライベート ポート番号を使用すると認識しているのですが、ウェルノウンポート番号はクライアント側でも使用するのでしょうか?

  • サーバからクライアントにポート番号を指定する方法

    java初心者です。 現在javaを使ってサーバとクライアントのsocketプログラムを作っています。 動作としてはサーバ側がクライアントに対して接続するポートを指定し、以後クライアントがサーバに対して通信を行う際には指定されたポート番号を使って通信を行うような動作をさせたいのですがうまくいきません。 そのため、みなさんの知恵を拝借したいのですが、アドバイス等頂けないでしょうか。 また、javaでは実現不可能だとするのでしたら、その理由も詳しく教えていただけると幸いです。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • クライアント側のポート番号

    ネットワークの勉強を始めたばかりの者です。 ポート番号に関する本で、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が動的に割り当てる」と書いてあります。 私がしている勘違いはなんでしょうか。

  • ポート番号

    この度、社内公開しているWEBサーバに対し、特定のポート番号のみ開放して残りはすべてフィルタをかけて閉じました。 しかしこの為、今までアクセス出来ていたこのサーバ上の共有フォルダに、クライアントからアクセス出来なくなってしまいました。 別途特定のポートを開放して解決出来るのであれば、その番号のみ追加開放しようと考えております。素人で申し訳ありませんが、ご存知の方がいらっしゃいましたらご教授ください。 環境としてサーバはNT Server4.0、クライアントはWINのXPと2000です。 宜しくお願いいたします。

  • VC++2008Expressでwin32appとwinsockの勉強

    VC++2008Expressでwin32appとwinsockの勉強の為にネットワークゲームを作ろうと思ってます。 winsockについて色々調べているうちに、疑問がわいたので質問します。 実現したいのは、サーバーとクライアントが1:Nのネットワークゲームです。 プレイヤーはサーバーに接続し、部屋に入ります。 誰かが初めて部屋に入ったら、サーバー側で部屋を用意します。(複数の部屋が立つこともあります) サーバー側で用意された部屋は、タイマーのイベントで部屋の状況データが変ります。 また、部屋にいるプレイヤーがアクションを起こす度に、サーバーの状況データが変ります。 その状況データを部屋に居る1人以上のプレイヤーで参照し共有します。 またプレイヤーデータはサーバー側で全部を一括管理します。 このような、プログラムを作りたいと思ってるんですが、 例えばサーバー側でwinsockは待ちうけ(accept)の所でプログラムは止まってしまいますよね。 クライアント側では受信(recv)の所で止まりますよね。 サーバー側やクライアント側で通信を待ち受けながら、 タイマーやマウスクリックに対するイベント処理を同時に行うことは可能なんでしょうか。 出来るとしたら、どのような仕組みにする必要があるでしょうか。 よろしくお願いします。m(_ _)m

  • クライアント側のポート番号を指定しての通信

    クライアント側で、自身のポート番号を指定して通信したい場合どうすれば良いですか?

  • ダイアログのクライアントの境界線

    現在、VC++でダイアログベースのプログラムを作成中で質問があるのですが。(MFCは使っていません。) ダイアログエディタで指定する「クライアントの境界線」はダイアログエディタを使用しないと指定できないのでしょうか? また、ダイアログの中にビットマップを組み込むことはできるのでしょうか? ちなみにダイアログはCreateWindow()をPOPUP指定し、それをShowWindow()で出力する単純なものです。 色々いっぺんに質問して申し訳ありませんが、よろしくお願いします。

  • UDP/IPでのソケット作成について(winsock)

    UDP/IPでのソケット作成について(winsock) 開発環境VC++.NET、O/S WIN2000にてソケットプログラミング(winsock2.0)をしています。 コンソールプログラミングではありませんが、WindProcは持っていません。 UDPサーバーを作り、複数クライアントの対応をしたいと考えています。 クライアントAからの通信やりとり中に クライアントBからの通信がきたら、そちらとも通信やりとりを(自動で)行いたい。 ここで問題なのが、クライアントAの要求ポートが15000で、 クライアントBの要求ポートも15000なのです。 同じ既に開いているポートでソケット作成しようとしても、socket()関数はエラーを返してくるのですが、 やり方を工夫すれば、同一ポートでの複数クライアント対応は可能なのでしょうか。不可能なのでしょうか。 可能であれば、やり方、ヒント等教えてください。よろしくお願いします。 追記 (1)TCP/IPでは、同一ポートでソケット作成が可能でした。ネットで探したサンプルプログラムが  そのような動きをしていたのですが、UDPに書換えることはできませんでした。  http://eternalwindows.jp/network/winsock/winsock04s.html (2)UNIXの場合fork()処理後に socket()作成 → bind()で同一ポートでの複数クライアント対応が  上手くいくらしいのですが、Windowsではマルチスレッド等をうまく活用すれば、  fork()と同様の処理が可能になり、目的が達成できるでしょうか。

  • WinSockのWANレベル接続について

    VB.NETです。 WinSockを使うにあたり、WANレベルで通信を行いたいのですが、何をすればいいのか検討がつきません。 グローバルIPをホストに指定するだけではダメなんでしょうか? もしかしてマシン名指定だけでも繋がりますか? 他のPCから試せないのでわかりません。 グローバルIPを指定した時のエラー番号は10061で、サーバー側を起動せずにクライアント側で127.0.0.1を指定した時と同じ番号でした。 ルーターの設定で、ポート転送->使うポートの転送先を自PCのプライベートアドレスにしてあります。 アンチウィルスソフトは導入していません。また、ファイアウォールを外してもできませんでした。 起動中にポート開放チェックをしたら、開放できているようです。

専門家に質問してみよう