У меня есть эта функция C.Функция C, Сетевое программирование
void execMessage(int sockfd,void *structCHARMS, ClientData *client)
{
ClientData *client_recv = (ClientData *) structCHARMS;
client->local_addr=client_recv->local_addr;
client->mode = client_recv->mode;
char*msg;
CharmsMsg chmsg = {charms_msg_map[XTypes_CONFIG_PARAM].msg_code, client, 1184};
msg = encode(&chmsg, "0.01");
ssize_t n = 0;
n = send(sockfd,msg,strlen(msg), 0);
}
Он вызывается из основной функции классического TCP-сервера, подключенного к TCP-клиенту. Он создает сообщение (с определенным кодом функции) и отправляет его на сервер.
Проблема в том, что при вставке этой функции в тот же файл main()
она работает правильно, но когда я вставляю ее в другой файл, у меня возникает ошибка сегментации при запуске программы.
Может ли кто-нибудь мне помочь? Спасибо
В моем хрустальном шаре я вижу статическую функцию в другом файле. Его имя - 'encode()' или 'strlen()' или 'send()' Или это локальный typedef? – wildplasser
encode - это локальный typedef. strlen() и send() - функция C. strlen() в string.h и send() в. Моя проблема в том, что когда я вставляю эту функцию в ServerTCP.c, файл, содержащий main(), он работает правильно .... но когда я вставляю его в другой файл, он не работает ... особенно функция отправки не работает work :( –
EngAndreaR
Вы используете 'encode' как функцию, а не typedef. – Barmar