Winsockを利用した単純なファイル送信プログラムについて
こんばんは。
何度もこの掲示板を利用させていただいている者です。
WinsockのUDPを用いて簡単なファイル送信プログラムを作っています。UDPを使わずに、TCPを使用したほうが良いのでは?とのご指摘をいただきましたが、まずは、UDPを利用した単純なファイル送信プログラムを作ってみたいと思っています。
しかし、送信側から受信側へファイルがうまく受信できていません。もしかしたら、送信側自体がきちんと送信できていないのかもしれません。
以下にそのプログラムの概要と内容を示します。
[概要]
送信側→受信側にUDPを用いて、送信側にあるjpegまたはmpegファイルを送信し、受信側でファイルを開く。
[プログラム概要]
・送信側
ファイルポインタを用いてファイルオープン
fread関数とsendto関数を用いて1024バイトずつ送信
・受信側
ファイルポインタを用いてファイルオープン
whileの無限ループ内に、recvfrom関数とfwrite関数を用いて送信側からのデータを受信
[プログラムの内容]
・送信側
printf("読み込み用ファイルを入力して下さい:");
scanf("%s",fname);
if((fp = fopen(fname,"rb")) == NULL){
printf("入力ファイルをオープンできない。\n");
exit(1);
}
char send_buf[1025];
int n;
while(n = fread(send_buf,1,1024,fp) != -1){
sendto(theSocket,send_buf,n,0,(LPSOCKADDR)&saServer,sizeof(struct sockaddr));
}
・受信側
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);
}
ご指摘またはご教授をいただけたらと思います。
よろしくお願いします。
お礼
書き込みありがとうございます。 参考にさせていただきます。