и еще вопрос... допустим клиент передал бит сервер принял програма выполнилась , но если я пробую сразу опять запустить сервер он не запускается так как ошибка вызова bind как с этим справится
внимательнее читай снейдера

сокеты закрывать надо перед завершением программы (close())
int a; переменная а обьявлена как целое число, да в прочим я как только ее не обьявлял и строкой и с плавающей точкой, но всьорано компилитса не хочет
помогите розобратса пожалуйста.
тут как раз перез практическими знаниями неплохо бы иметь теоретические сведения.
берем сигнатуру функции send:
int send(int s, const void *msg, int len, unsigned int flags);
с первым и последним аргументом, вроде, худо-бедно ясно, смотрим на второй и третий.
const void * msg
- это указатель на область памяти, содержащую данные, которые надо передать через сокет.
const означает, что функция
send не внутри себя не может изменять эти данные, только считывать.
int len
- это размер данных (в байтах, кстати, а не в битах), которые расположены по адресу
msg.
Теперь разберемся, что надо сделать, чтобы передать сокету числовое значение (твой int a

)
int a = 10;
rc = send(s, &a, sizeof(int), 0);
Найди отличия со своим вариантом и разберись в них.