Alles beginnt mit einer Frage

Aktuelle Fragen

Hallo könnt ihr mit diese beiden Codes Zeile für Zeile erklären?

#include <iostream>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <unistd.h>
#include <string.h>

define BUFLEN 512

define PORT 9930

using namespace std;

int main(void) { struct sockaddr_in si_me={0}; struct sockaddr_in si_other={0}; int s, slen=sizeof(si_other); char buf[BUFLEN]; string rbuffer, sbuffer;

s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

si_me.sin_family = AF_INET; si_me.sin_port = htons(PORT); si_me.sin_addr.s_addr = htonl(INADDR_ANY);

bind(s, (sockaddr*)&si_me, sizeof(si_me));

while (true) { memset(buf, 0, sizeof(buf)); // clear receive buffer recvfrom(s, buf, BUFLEN, 0, (sockaddr )&si_other, (socklen_t)&slen); rbuffer=buf; cout<<"received: "<<rbuffer<<" from "<<inet_ntoa(si_other.sin_addr)<<endl; sbuffer="I just received: "+rbuffer; sendto(s, sbuffer.c_str(), sbuffer.length(), 0, (sockaddr )&si_other, slen); } close(s); return 0; }

#include <iostream>
#include <arpa/inet.h>
#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <string.h>


define BUFLEN 512

define PORT 9930

define SRV_IP "127.0.0.1"

using namespace std;

int main(void) { struct sockaddr_in si_other={0}; int s, slen=sizeof(si_other); char buf[BUFLEN]; string buffer;

s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

si_other.sin_family = AF_INET; si_other.sin_port = htons(PORT);

inet_aton(SRV_IP, &si_other.sin_addr);

cout << "Message: "; getline(cin, buffer); cout<<"sending buffer: "<<buffer<<endl; sendto(s, buffer.c_str(), buffer.length(), 0, (sockaddr *)&si_other, slen); memset(buf, 0, sizeof(buf)); // clear receive buffer recv(s, buf, BUFLEN, 0); cerr<<"received reply: "<<buf<<endl;

close(s); return 0; }

Falls sich jemand damit auskennt wäre ich euch sehr dankbar, im Prinzip verstehe ich die Funktionsweise der Codes, der erste Code ist ein Server der die Anfrage erhält und der zweite der Client der die Anfrage versendet. Jedoch sind mir hier einige Befehle nicht geläufig und ich wäre froh wenn mir jemand den Code Zeile für Zeile erklärt

Programmieren
1 Antwort