Этот ответ не применим к 2005 году, как указано здесь, но в случае, если кто-то сталкивается с этим во время поиска и использует 2008 год, у этого другого вопроса есть рабочий ответ: SSIS 2008 и Undouble
В вашем коде много ошибок:).
Прежде всего scanf
принимает в качестве 1-го аргумента указатель, поэтому, когда вы хотите использовать его для строки, сделайте:
char ip[10];
...
scanf("%s", ip);//THIS IS CORRECT
not scanf("%s", &ip);
.
На сервере компилятор жаловался на тип clilen
. accept
ожидает sockelen_t
(или эквивалентно unsigned int
), в то время как вы объявили эту переменную простой int
.
Это следующее. В клиенте вы сделали strcpy(buffer, name);
, который копирует name
, начиная с начала буфера, но начало буфера фактически содержало ваши данные. Вы должны сделать что-то вроде следующего, используя strcat
, как вы делали в следующей строке:
bzero(buffer, 255);
fgets(buffer, 255, stdin);
strcat(buffer, name);
strcat(buffer, ": ");
Также обратите внимание на другое: избегайте смешивания функций системного вызова read
write
getchar
с библиотечными функциями, такими как fread
, fwrite
, fgets
. У меня была эта проблема с тем, что вызвано тем фактом, что fgets
может читать больше байтов, чем ожидалось. В вашем случае все должно быть в порядке, потому что вы используете их для разных целей.