Я пытаюсь создать необработанный сокет, который отправляет и получает сообщение с заголовком ip / tcp под linux.
Я могу успешно привязать к порту и получить tcp-сообщение (то есть: syn)
Тем не менее, сообщение, кажется, обрабатывается ОС, но не мое. Я просто читатель этого (как Wireshark).
Мой необработанный сокет привязывается к порту 8888, а затем я пытаюсь подключиться к этому порту через telnet.
В wireshark он показывает, что порт 8888 отвечает «первым подтверждением» при получении запроса «syn». В моей программе он показывает, что получает новое сообщение и не отвечает ни на какое сообщение.
Есть ли способ связывания с этим портом? (Не обрабатывайте его)
Вот часть моего кода, я пытаюсь обрезать проверку ошибок для удобства чтения
sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_TCP);
int tmp = 1;
const int *val = &tmp;
setsockopt (sockfd, IPPROTO_IP, IP_HDRINCL, val, sizeof (tmp));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(8888);
bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
//call recv in loop