Отправка кадров Ethernet (UDP) на другие ПК - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь отправить кадры UDP со своего ноутбука на другой компьютер в качестве клиент-серверного приложения с использованием C ++.Я отслеживаю порт Ethernet с помощью WireShark и не вижу никакой информации, отправляемой с моего ноутбука.Может ли кто-нибудь помочь с этим?Я пропустил важный шаг?

/*
Simple udp client
*/

#include "stdafx.h"
#define _WINSOCK_DEPRECATED_NO_WARNINGS

#include<stdio.h>
#include<winsock2.h>

#pragma comment(lib,"ws2_32.lib") //Winsock Library

#define SERVER "10.222.14.229"
#define BUFLEN 512
#define PORT 8888

int main(void)
{
    struct sockaddr_in si_other;
    int s, slen = sizeof(si_other);
    char buf[BUFLEN];
    char message[BUFLEN];
    char message1[] = "Hello";
    WSADATA wsa;

    //Initialise winsock
    printf("\nInitialising Winsock...");
    if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
    {
        printf("Failed. Error Code : %d", WSAGetLastError());
        exit(EXIT_FAILURE);
    }
    printf("Initialised.\n");

    //create socket
    if ((s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == SOCKET_ERROR)
    {
        printf("socket() failed with error code : %d", WSAGetLastError());
        exit(EXIT_FAILURE);
    }

    memset((char *)&si_other, 0, sizeof(si_other));
    si_other.sin_family = AF_INET;
    si_other.sin_port = htons(PORT);
    si_other.sin_addr.S_un.S_addr = inet_addr(SERVER);
    while (1)
    { 
        if (sendto(s, message1, strlen(message1), 0, (struct sockaddr *) &si_other, slen) == SOCKET_ERROR)
        {
            printf("sendto() failed with error code : %d", WSAGetLastError());
            exit(EXIT_FAILURE);
        } 
    memset(buf, '\0', BUFLEN);   
        puts(buf);
    }
    closesocket(s);
    WSACleanup();
    return 0;
}

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Решение этой темы:

В WireShark отсутствовала библиотека Pincap, когда она была установлена ​​в Windows 10.

Установка библиотеки Pincap решила проблему.

0 голосов
/ 07 июня 2018

В этом коде нет ничего плохого - он работает нормально (не считая занятого цикла).Либо:

  • пакеты не отправляются по проводам, возможно, из-за отсутствия маршрута к 10.222.14.229 (попробуйте пропинговать его), либо
  • WireShark не работаетправильно (может ли он видеть другой трафик с вашего ноутбука? - он может иметь набор фильтров или что-то в этом роде)

Если вы подозреваете WireShark, вы всегда можете попробовать Microsoft Network Monitor .

...