【发布时间】:2014-06-19 14:25:11
【问题描述】:
我想向 program2 发送一个文件,但首先我想发送该文件的大小。 我在 program1 中有这个:
FILE *script;
int j;
int size;
char* codigo;
if (argc > 1){
for (j = 1; j < argc; j++){
if ((script = fopen(argv[j], "r")) == NULL){
perror(argv[j]);
}else{
fseek(script, 0, SEEK_END);
size = ftell(script);
fseek(script, 0, SEEK_SET);
codigo = malloc(sizeof(char)*(size +1));
if(codigo) {
fread(codigo, sizeof(char), size, script);
codigo[size] = '\0';
}
struct addrinfo hints;
struct addrinfo *serverInfo;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
getaddrinfo(ip, puerto, &hints, &serverInfo);
int serverSocket;
serverSocket = socket(serverInfo->ai_family, serverInfo->ai_socktype, serverInfo->ai_protocol);
connect(serverSocket, serverInfo->ai_addr, serverInfo->ai_addrlen);
freeaddrinfo(serverInfo);
printf("Conectado al servidor\n");
send(serverSocket, codigo, strlen(codigo) + 1, 0);
close(serverSocket);
}
fclose(script);
free(codigo);
free(ip);
free(puerto);
}
}
在 program1 中,我将脚本的内容发送到 program2。在 program2 我有:
#define PACKAGESIZE 100
我为recv 定义了这个包,但是这个包大小可以是可变的,所以我需要program1 发送我之后发送的包的大小。
在 program2 中,当我有尺寸时,我可以接收包装并打印它。
【问题讨论】:
-
你想怎么发送?这是您定义的协议。
-
我想发送文件的大小。我想是 IPV4 我问我。