В настоящее время я делаю клиентскую и серверную программу в среде Unix. Я сделал это, чтобы клиент мог загружать содержимое файла на клиент. Сейчас я нахожусь в процессе добавления опций и обработчиков ошибок к примеру сервера, клиент должен ввести имя файла. Чтобы сделать это, я хотел послать сообщение «ОК», если все опции были проверены, однако, если я сделаю это, это может привести к тому, что чтение и отправка моего файла сойдут с ума, и я понятия не имею, почему.
Я загрузил функции для этого
Код клиента
int putFile (char path[256], int fd)
{
char mystring[1000];
char buffer[100];
int i , n;
FILE * pFile;
n = read(fd,buffer,100);
printf("%s", buffer);
if (strcmp(buffer, "OK") == 0)
{
pFile = fopen(path, "r");
if(pFile != NULL)
{
while(fgets(mystring, sizeof(mystring), pFile) != NULL)
{
//fputs(mystring, fd);
write(fd,mystring,strlen(mystring));
}
}
else
{
printf("Invalid File or Address \n");
}
fclose(pFile);
}
else
{
printf("%s \n", buffer);
}
}
Серверный код для чтения сокета
int putRequest(int fd, char buf[], char str[])
{
char data[256];
int number;
char * ptr;
char results[100];
int total = 0;
char *arguments[1024];
char temp[10];
int i;
ptr = strtok(buf," ");
while (ptr != NULL)
{
char * temp;
temp = (char *)malloc(sizeof(ptr));
temp = ptr;
arguments[total] = temp;
total++;
ptr = strtok (NULL, " ");
}
if(total == 1)
{
strcat(str, "Invaild Arguments \n");
return 1;
}
write(fd, "OK", 256);
FILE * pFile;
pFile = fopen ("myfile.txt","w");
if (pFile!=NULL)
{
while(read(fd, data, 256) != NULL)
{
fputs(data, pFile);
}
fclose (pFile);
}
else
{
strcat(str, "Invaild File");
return 0;
}
strcat(str, "Done");
return 1;
}
Заранее спасибо и просто опубликуйте что-нибудь, если вам нужно увидеть больше кода. Я просто разместил код, который должен вызывать проблему.