No estoy intentando enviar el archivo, sino un string con texto, mira te copio el codigo completo del cliente.
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <winsock.h>
#include <string.h>
#include <conio.h>
#define MAXBUFLEN 2048
#define PORT 4950
char SendBuff[MAXBUFLEN]="";
int main(int argc, char *argv[]){
WSADATA wsaData;
SOCKET conn_socket;
struct sockaddr_in server;
struct hostent *hp;
int resp;
//Inicializamos la DLL de sockets
resp=WSAStartup(MAKEWORD(1,0),&wsaData);
if(resp){
printf("Error al inicializar socket\n");
getchar();return -1;
}
//Obtenemos la IP del servidor... en este caso
// localhost indica nuestra propia máquina...
hp=(struct hostent *)gethostbyname(argv[1]);
if(!hp){
printf("No se ha encontrado servidor...\n");
getchar();WSACleanup();return WSAGetLastError();
}
// Creamos el socket...
conn_socket=socket(AF_INET,SOCK_DGRAM, 0);
if(conn_socket==INVALID_SOCKET) {
printf("Error al crear socket\n");
getchar();WSACleanup();return WSAGetLastError();
}
memset(&server, 0, sizeof(server)) ;
memcpy(&server.sin_addr, hp->h_addr, hp->h_length);
server.sin_family = hp->h_addrtype;
server.sin_port = htons(PORT);
//vemos el numero de elementos del fichero
FILE *pFichero;
pFichero=fopen(argv[2], "r");
int x=0;
while (!feof(pFichero))
{
fgetc(pFichero);
x++;
}
fclose(pFichero);
printf("%d\n",x);
//recuperar archivo
char sc2[x];
pFichero=fopen(argv[2], "r");
while (!feof(pFichero))
{
sprintf(sc2,"%s%c",sc2,fgetc(pFichero));
}
fclose(pFichero);
resp=sendto(conn_socket,
sc2,
strlen(sc2),
0,
(struct sockaddr *)&server,
sizeof(struct sockaddr)
);
if(resp==SOCKET_ERROR){
printf("Error al enviar datos...\n");
closesocket(conn_socket);WSACleanup();
getchar();return WSAGetLastError();
}
// Visualizamos resultado...
printf("Enviados %d bytes hacia %s\n",resp,inet_ntoa(server.sin_addr));
getchar();
// Cerramos el socket y liberamos la DLL de sockets
closesocket(conn_socket);
WSACleanup();
return EXIT_SUCCESS;
}
Gracias!