• 締切済み

空きポートの取得方法

WinSock.DLLでFTPクライアントのデータコネクション用ソケットを作成するときローカルマシンの空きポート番号を取得する方法をどなたがもしご存知でしたら教えてください。よろしくお願いしますっ。

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

失礼しました。コントロールではなかったのですね。 どこかのHPにCのサンプルがあったんだけど、PCが犯されて全てフォーマット。。。 URLがわからなくなってしまいました。 僕もFTPソフトを作成し始めたのですが、まだ通信の部分に手をつけてません。(T▽T) コントロールのSock機能に似せたListenサンプルを作ってみました。 たぶんこんな感じかな。(未検証) SocketHandle = CreateSocket(AF_INET, SOCK_STREAM, 0) If SocketHandle = SOCKET_ERROR Then   LastErrorCode = Err.LastDllError   Exit Function End If hWndLocal = CreateWindowEx(0, "ClassCopy", "", 0, 0, 0, 0, 0, 0, 0, App.hInstance, 0) If WSAAsyncSelect(SocketHandle, hWndLocal, WM_USER, FD_ACCEPT) <> 0 Then   LastErrorCode = Err.LastDllError   Exit Function End If lngRet = ListenSocket(SocketHandle, 5) LastErrorCode = Err.LastDllError If lngRet = 0 Or (lngRet = SOCKET_ERROR And LastErrorCode = sckWouldBlock) Then   uState = sckListening   LastErrorCode = 0 End If

megxp
質問者

お礼

あっありがとうございます!! 今までポートに0をいれてBindしてもうまくいかなかったんですが htons(0)にしてみたら、うまく空きポートを割当ててくれたみたいです! でもWSAAsyncSelectのつかいかたなんかとても参考になりましたよ。 感謝感謝ですっ!!

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

ポートを指定しないでオープンしてあげると、自動で空きポートを使用するのでポート指定は必要ないと思うけど、、、

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=155606
megxp
質問者

お礼

ご回答ありがとうございますっ! でも今回はWinSockコントールでなくWinSock.DLLで処理させたいのです。 ポート番号を切り替えてbindしてみたんだけど、どーもうまくいかないんです・・・。

専門家に質問してみよう