掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
転送エラー (ID:58535)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ヘッダーの送受信は、送信側が fseek( fp2, 0L, SEEK_END );// ファイルポインタを最後尾へ移動 header2.fsize = ftell( fp2 );// ファイルサイズを取得 fseek( fp2, 0L, SEEK_SET );// ファイルポインタを先頭へ移動 res=send(c,(char *)&header2,sizeof(header2),0); if(res==SOCKET_ERROR) error("ファイル送るエラー\n"); 受信側が res=recv(finger, (char *)&header, sizeof(header), 0); if(res==SOCKET_ERROR) {error("ファイル受信エラー\n"); break;} fp=fopen(header.filename,"wb"); pFileBuffer=(char *)calloc(524288,sizeof(char)); どちらもこの後に中身を送るための上のほうにもかいているようにwhile文をかいています。 受信側のwhileはぬけていないかもしれません。fcloseでとまるようにしてみたら、とまらなかったので。で、recvの後にif(header.fsize==0) printf("a");という意味のないプログラムを追加してそこでとまるようにしてみたら、送信側ではsendを二回実行したのに対し受信側ではさきほど作ったブレイクポイントで一度しかとまりませんでした。そして送信側のsendの戻り値は524288だったのに対し、一度とまったときの受信側のrecvの戻り値は386952という数字になっていました。 よってこれはsendでは524288おくれていることになっているけど、recvは386952しかおくれていなくて、recvのところで実行がとまっているのではないかとおもわれます。 524288送信したのに386952しか受信できていないなんていうことがありえるのですか?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.