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
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;
}
06. april 2004 - 12:33
#3
så engang nogle eksempler, som jeg downloadede... kan ikke huske adressen, men jeg har da eksemplerne...
/jsc