-PR-
締切済み

空きポートの取得方法

  • 困ってます
  • 質問No.182397
  • 閲覧数1834
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 37% (10/27)

WinSock.DLLでFTPクライアントのデータコネクション用ソケットを作成するときローカルマシンの空きポート番号を取得する方法をどなたがもしご存知でしたら教えてください。よろしくお願いしますっ。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル12

ベストアンサー率 65% (276/422)

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

お礼率 37% (10/27)

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


  • 回答No.2
レベル12

ベストアンサー率 65% (276/422)

失礼しました。コントロールではなかったのですね。

どこかの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

お礼率 37% (10/27)

あっありがとうございます!!
今までポートに0をいれてBindしてもうまくいかなかったんですが
htons(0)にしてみたら、うまく空きポートを割当ててくれたみたいです!
でもWSAAsyncSelectのつかいかたなんかとても参考になりましたよ。
感謝感謝ですっ!!
投稿日時 - 2001-12-12 09:31:08
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-

特集


専門家があなたの悩みに回答!

ピックアップ

ページ先頭へ