Avatar billede sm00king Nybegynder
24. marts 2004 - 09:17 Der er 3 kommentarer

UDP send packet

Jeg skal bruge et lille kodeeksempel der sender en packet med indholdet: "Hej med dig" til ip'et xxx.xxx.xxx.xxx
Den skal ikke vente på svar men bare sende den ene packet og det er det.
Eksemplet skal bruges i C++ (Borland)
På forhånd tak
Avatar billede medions Nybegynder
24. marts 2004 - 10:11 #1
Avatar billede bertelbrander Novice
24. marts 2004 - 20:38 #2
Jeg lavede et lille program der kan sende og modtage en streng vha. UDP.

Programmet skulle kunne kompilere med diverse windows kompilere, herunder Borland.

Du kører først programmet uden argumenter, det er den version der vil modtage og udskive det det den læser.
Så stater du en ny udgave af programmet med IP addresen på den der skal modtage som argument (e.g. 192.168.0.1). De to programmer kan godt køre på samme maskine.

#include <windows.h>
#include <iostream>
#include <string.h>

using namespace std;

#define MAX_LEN 80

int main(int argc, char* argv[])
{
  SOCKET Socket;

  WSADATA wsaData;
  WSAStartup(MAKEWORD(1, 1), &wsaData);

  Socket = socket(AF_INET, SOCK_DGRAM, 0);

  if(argc == 2)
  { // I'm am going to send

    cout << "Skriv noget" << endl;
    cout << "Skriv quit for at stoppe" << endl;
    char Buf[MAX_LEN];
    do
    {
      cout << "> ";
      cin.getline(Buf, MAX_LEN);

      struct sockaddr_in sockaddr;

      memset((char *)&sockaddr, 0, sizeof(sockaddr));
      sockaddr.sin_family = AF_INET;
      sockaddr.sin_addr.s_addr = inet_addr(argv[1]);
      sockaddr.sin_port = htons(5011);

      if(sendto(Socket, Buf, strlen(Buf) + 1, 0, (struct sockaddr *)&sockaddr, sizeof(sockaddr)) == SOCKET_ERROR)
      {
        cout << "Socket error "<< endl;
        return 1;
      }
    }
    while(strcmp(Buf, "quit"));
  }
  else
  { // I will listen
    struct sockaddr_in sockaddr;
    memset((char *)&sockaddr, 0, sizeof(sockaddr));
    sockaddr.sin_family = AF_INET;
    sockaddr.sin_port = htons(5011);

    if(bind(Socket, (struct sockaddr *)&sockaddr, sizeof(sockaddr)) < 0)
    {
      cout << "Failed to bind socket" << endl;
      return 1;
    }

    cout << "Waiting for data" << endl;
    char Buf[MAX_LEN];
    int Len;
    do
    {
      Len = recv(Socket, Buf, MAX_LEN, 0);
      if(Len > 0)
        cout << "Rx: " << Buf << endl;
      else if(Len < 0)
        cout << "Socket error"  << endl;
    }
    while(Len > 0 && strcmp(Buf, "quit"));
  }

  return 0;
}
Avatar billede jsc Nybegynder
06. april 2004 - 12:33 #3
så engang nogle eksempler, som jeg downloadede... kan ikke huske adressen, men jeg har da eksemplerne...

/jsc
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester