2

Windows 7 で WinInet の問題を確認しました。これは非同期で見られます。モードでは、InternetReadFile()がERROR_IO_PENDINGを返したときに、 INTERNET_STATUS_RESPONSE_RECEIVEDイベントをトリガーしないことがあります。Wireshark を使用してトラフィックをキャプチャしたので、完全な応答を正しく受信していると確信しています。しかし、WinInet を使用するアプリケーションはそうではありません。この問題は WinInet API の使用方法に関連しているのではないかと疑っていましたが、非同期でも問題を再現できることが判明しました。MSDN の WinInet の例。( http://msdn.microsoft.com/en-us/library/windows/desktop/cc185684(v=vs.85).aspx )

テスト サーバーに接続するように例を変更します。テスト サーバーは 20000 バイトのデータを送信しているだけです。この動作は、Win 7 (WinInet dll バージョン WIN7_IE9_RTM.110308-0330) でのみ見られます。サーバーについて特別なことは何もないことを示すためだけに、Python で実際にテストしているサーバー アプリケーションを次に示します。

import time
from socket import *

ADDR = ("", 80)
BUFSIZE = 1024

serversock = socket(AF_INET, SOCK_STREAM)
serversock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
serversock.bind(ADDR)
serversock.listen(5)
t0 = time.time()
while 1: 
    print 'waiting for connection. previous transaction takes %0.3f secs' % (time.time()-t0)
    t0 = time.time()
    clientsock, addr = serversock.accept()
    print '...connected from:', addr
    data = clientsock.recv(BUFSIZE)
    print 'recv data:' + repr(data)    

    send_data = "A" * 20482
    send_data += "supo\r\n\r\n"
    clientsock.send(send_data)

よろしく、

4

0 に答える 0