自分なりにソースコードを書いてみましたが
100000バイトまでしか送れません。
ソースコードを以下に掲載します。
#include <stdio.h>
#include <winsock2.h>
int main( void )
{
int sock, ret;
struct sockaddr_in addr;
FILE *fp;
char *fname = "test.bmp";
unsigned char buf[100000];
//char buf1[1000000];
char body[100000];
int i;
int size;
//int counter;
WSADATA wsadata;
WSAStartup( 0x0101, &wsadata );
fp = fopen( fname, "rb" );
size = fread( buf, sizeof( unsigned char ), 100000, fp );
printf("size is%d\n",size);
for( i=0; i<size; i++ )
{
printf( "%02X ", buf[i] );
}
puts("");
//PROC pfn0rig;
//printf("%d\n",buf[5]);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("61.214.105.140");
addr.sin_port = htons(80);
sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
ret = connect( sock, (struct sockaddr *)&addr, sizeof addr );
if ( ret < 0 )
{
printf( "can't open http port\n" );
return 0;
}
strcpy(body,"namae=");
memcpy(&body[6],buf,size);
memcpy(&body[6+size],"\r\n",2);
//sprintf(body,"namae=%s\r\n",buf);
body[size+6]='\0';
char head[] = "POST /~yamada_mama_papa/test.cgi HTTP/1.0\r\nHost: s1.muryo.etowns.net\r\n";
char length[100];
sprintf( length, "Content-Length: %d\r\n", 6+size );
int n=0;
send(sock,head,strlen(head),0);
send(sock,length,strlen(length),0);
send(sock,"\r\n",2,0);
send(sock,body,size,0);
closesocket( sock );
fclose( fp );
}