Пытаюсь получить на сокет TCP пакет, но пока безуспешно.
Как сделать программу работающей: чтобы ждала пакет на порту - и при получении оный вывела на терминал? (важна реализация именно с recvmsg() или с recvfrom() )
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 55555
int main() {
int sock;
struct sockaddr_in addr;
struct msghdr msg = {NULL, 0, NULL, 0, NULL, 0, 0};
struct iovec iovbuf;
ssize_t recv_bytes;
char recv_string[1024];
printf("Listening port %i...\n", PORT);
// Create internet socket
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock < 0) printf("couldn't create socket\n");
// Bind socket to network interface (ip address) and tcp port
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(sock, (struct sockaddr *) &addr, sizeof(addr)) != 0)
{ printf("error: couldn't bind socket\n"); exit(1); }
// Receive message
msg.msg_name = &addr;
msg.msg_namelen = sizeof (struct sockaddr_in);
msg.msg_iov = &iovbuf;
msg.msg_iovlen = 1;
iovbuf.iov_base = recv_string;
iovbuf.iov_len = sizeof (recv_string) - 1;
if ((recv_bytes = recvmsg (sock, &msg, 0)) < 0)
{ perror("RECVMSG"); close(sock); exit(1); }
else printf("%s\n",recv_string);
close(sock);
return 0;
}
Ответ на:
комментарий
от Begemoth
Ответ на:
комментарий
от xydo
Ответ на:
комментарий
от s0ldat
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от xTERM
Ответ на:
комментарий
от xTERM
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Подсчет числа возможных открытых TCP-портов (2011)
- Форум Сокеты в Си (продолжене) (2005)
- Форум Не понимаю почему не работает (2013)
- Форум Подключиться к unix-сокету через bash (2020)
- Форум Сокеты передача сообщений между компьютерами. Помогите найти ошибку. (2012)
- Форум Работа с сокетами в C (2010)
- Форум Сканер портов (2000)
- Форум BROADCAST sendto вызывает Permission denied (2004)
- Форум Клиент, сервер и их правильная работа. (2005)
- Форум Помогите разобраться с sendmsg & recvmsg. (2013)