Доброго времени суток, вот есть два небольших куска кода.. Один отправляет пакет, другой принимает. ПРи передаче и приеме ошибок нет, но при попытке вывести содержимое принятого пакета на экран выводится всякая хрень. Помогите пожалуйста исправить ошибки, если они есть.
Вот код отправляющий пакет
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/udp.h>
struct udp_header
{
u_short src_port;
u_short dst_port;
u_short length;
u_short crc;
};int main(int argc, char *argv[])
{
char buffer[50];
struct udp_header *udph = (struct udp_header*)buffer;
char *message = (char *)buffer + sizeof(struct udp_header);
int s;
int result;
struct sockaddr_in target;
udph->src_port = htons(23);
udph->dst_port = htons(23);
udph->length = 0;
udph->crc = 0;
s = socket(PF_INET, SOCK_RAW, IPPROTO_IP);
if (s < 0) printf("socket failed!\n");
memset(&target, 0, sizeof(target));
target.sin_family = AF_INET;
target.sin_addr.s_addr = inet_addr("192.168.0.11");
strcpy(outm.message, "Hello!");
result = sendto(s, &buffer, sizeof(buffer), 0, (struct sockaddr *)&target, sizeof(target));
if (result < 0) {printf("send failed!\n");}
else printf("Sended %d bytes\n",result);
return result;
}
А вот код, принимающий пакет:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/udp.h>
struct udp_header
{
u_short src_port;
u_short dst_port;
u_short length;
u_short crc;
};
int main(int argc, char* argv[])
{
int s;
char buffer[50];
struct udp_header *udph = (struct udp_header*)buffer;
char *message = (char *) buffer + sizeof(struct udp_header);
int result;
struct sockaddr_in sourse;
int sourse_len;
memset(&sourse, 0, sizeof(sourse));
sourse.sin_family = AF_INET;
sourse.sin_addr.s_addr = inet_addr(/*argv[1]*/"192.168.0.11");
sourse_len = sizeof(sourse);
s = socket(PF_INET, SOCK_RAW, IPPROTO_IP);
while (1)
{
result = recvfrom(s, &buffer, sizeof(buffer), 0, (struct sockaddr*)&sourse, &sourse_len);
if (result > 0)
{
printf("Received %d bytes\n",result);
printf("%s\n",message);
}
}
}