ソケットプログラミングについて
こんにちは。
以前、この掲示板に質問させていただいた者です。
送信側から受信側へWinsockを利用し、jpeg,mpegファイルを送信したいのですが、プログラムを実行すると強制終了されてしまいます。以下に主要部分を記述します。
[送信側]
FILE *fp;
char fname[100];
printf("読み込み用ファイルを入力して下さい:");
scanf("%s",fname);
if((fp = fopen(fname,"rb")) == NULL){
printf("入力ファイルをオープンできない。\n");
exit(1);
}
char send_buf[1025];
int nRet;
int n;
while(n = fread(send_buf,1,1024,fp) != -1){
sendto(theSocket,send_buf,n,0,(LPSOCKADDR)&saServer,sizeof(struct sockaddr));
}
fclose(fp);
closesocket(theSocket);
[受信側]
FILE *fp;
char fname[100];
printf("書き込み用ファイルを入力して下さい:");
scanf("%s",fname);
if((fp = fopen(fname,"wb")) == NULL){
printf("出力ファイルをオープンできない。\n");
exit(1);
}
char Recv_buf[1025];
char size;
SOCKADDR_IN saClient;
while(1){
size = recvfrom(theSocket,Recv_buf,1024,0,(LPSOCKADDR)&saClient,&nLen);
fwrite(Recv_buf,size,1,fp);
}
fclose(fp);
closesocket(theSocket);
受信側を先に起動し、送信側を起動。送信側で1024バイトずつ送信し、受信側でwhileの無限ループを用いて送信側からのデータを受信するプログラムにしたつもりです。しかし、送信側で読み込みファイルを指定すると強制終了されてしまいます。ファイルオープンの仕方がおかしいのでしょうか?また、上記のプログラムでは1024バイトずつ送信できるようになっていますでしょうか?
よろしくお願いします。