プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/12 09:31

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



参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=155606
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/10 21:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!