ConnectEx,AcceptEx


MSDNからの引用

When the ConnectEx function successfully completes, socket handle s can be passed to only the following functions:

    * ReadFile
    * WriteFile
    * send or WSASend
    * recv or WSARecv
    * TransmitFile
    * closesocket


あれれ・・・?shutdownは?

SD_SENDしたいんだけど・・どうなってんのこれ

AcceptExもshutdown使えないようです。

試しにやってみたらWSAENOTCONN(10057)


つ、つながってないって??・・え、何?このデータ

いっぱいデータ送受信できてるんだけどおお><


ConnectもAcceptも完了ポートしたかったんだけどなぁ・・・

今回は素直にWSAEventSelectかなぁ・・・



追記

Acceptするソケットはshutdownいらなかったね。ってことは完了ポートできそー

ちょっとがっかりだったけど、希望が見えてきたヽ(´ー`)ノ


さらに追記

ちょっと調べてみるとAccept完了後

setsockopt(server_socket,SOL_SOCKET,SO_UPDATE_ACCEPT_CONTEXT,(char*)&listen_socket,sizeof(listen_socket))==SOCKET_ERROR


って感じで新しいサーバーソケットにListen用ソケットのオプションをコピーしてやるとshutdown可能でした。

Σ(゚Д゚;≡;゚д℃(゚д゚)エ?キタノ?

ちなみにConnectExのほうはまだやってないのでわかりませんがSO_UPDATE_CONNECT_CONTEXTもあるみたいなので

できそーじゃないかなぁ

どのソケットからこぴるか謎ですが・・・

ConnectExもできました。

err = setsockopt( s, 
  SOL_SOCKET, 
  SO_UPDATE_CONNECT_CONTEXT, 
  NULL, 
  0 );


こんな風にやるみたいです