Работа над созданием серверной/клиентской системы в C прямо сейчас, и у меня небольшие проблемы с клиентской частью. Из того, что я видел, мне нужно использовать sockaddr_in, чтобы я мог подключиться к серверу. Тем не менее, я получаю segfault каждый раз. Я считаю, что sockaddr_in имеет к этому какое-то отношение, так как комментируя его, а ссылки позже в программе исправляет segfault.sockaddr_in вызывает segfault?
код:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
int main(int argc, char** argv)
{
int Csock;
int con;
char *data = 0;
char buf[101] = "";
struct sockaddr_in addr;
Csock = socket(AF_INET, SOCK_STREAM, 0);
addr.sin_family = AF_INET;
addr.sin_port = htons(3435);
con = connect(Csock, (struct sockaddr*) &addr, sizeof(addr));
write(con, "Text", sizeof("Text"));
*data = read(con, buf, 100);
puts(data);
return 0;
}
к сожалению, я довольно новыми для C, так что это так же, как я могу понять ... может кто-нибудь сказать мне путь, о ликвидации Segfault?
Спасибо!
Поскольку у меня не было времени написать правильный ответ, я добавлю некоторые ошибки здесь: 'struct sockaddr_in addr;' не инициализирован, а самое главное IP-адрес для подключения к нему не установлен. '* data = read (con, buf, 100);' dereferences указатель NULL, и типы тоже не совпадают. 'connect/write/read' должен быть проверен на наличие ошибок (и, вероятно, сколько они действительно читали или писали) – nos