プロが教えるわが家の防犯対策術!

TCP/IPのクライアントを実行していると、ソケットが異常終了してしまいます。
エラーコード 10004 WSAEINTRです。
(内容は、WSACancelBlockingCall() によって中断された)。ソースの中を検索してもWSACancelBlockingCallは存在しません。しかしなぜかこの関数がCALLされrecvのブロックが解除されてしまいます。何か知っている方がいましたら助けていただけないでしょうか?宜しくお願い致します。
OS:Winxp Socket:ブロック型

A 回答 (1件)

winxpのプログラミングはしたことありませんが、UNIX系はしょっちゅうあります。

WASEINTRというエラーコード、なんとなく、INTRという文字列に引っかかるものがあります。それは、何らかのインタラプトが発生しているのではないでしょうか。異常終了しているように見えて、もう一度レシーブしにいくと、正しく読める可能性は無いでしょうか。

UNIX系では、EINTRというエラーコードがあって、これは、何らかのディバイスを読み込み中にインタラプトがかかったという意味のものです。故意にインタラプトをかけた場合でも、エラーがEINTRである場合は、この読み処理を抜けるかどうかを判断し、もし、抜ける必要が無い場合はもう一度読みにいくという操作をする必要があります。

WSAEINTRがUNIXのEINTRとは違うエラーであった場合はごめんなさい。
    • good
    • 0

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