» IPV6 Server Client Verbindung

Opperator AddidtionNeuen Thread eröffnenNeue Antwort erstellenÜbung Cafeteria
AutorNachricht
Beobachter 
Anmeldedatum: 09.11.2021
Beiträge: 1
09.11.2021, 11:25
zitieren

Hallo Zusammen,

ich muss gerade für ein kleines Projekt eine TCP Server Client Verbindung programmieren in C unter Linux.
Mit IPV4 hatte ich da bisher grundsätzlich Erfolg, für IPv6 klappt es leider nicht mehr.
Bei connect() bekommt er keine Verbindung.
Grundsätzlich soll die IP vom Sever mit in6addr_any festgelegt werden und bei Start angezeigt.
Dazu nutze ich inet_ntop um diese in einen String umzuwandeln. Hier zeigt er aber jedes mal, selbst wenn ich eine fest IP vorgebe, das gleich an (a00:4d2:: )
Auf Client Seite soll die IP dann als String eingegeben werden und mit inet_pton umgewandelt werden.
Diese lasse ich nach dem connect versuch nochmals zurück umwandeln mit inet_ntop, hier kommt, egal welchen String ich anfangs eingebe, bzw auch wenn ich eine feste IP vorgebe immer 200:4d2:: zurück.
Daher vermute ich mal, dass zum einen bei der Umwandlung auf Serverseite ein Fehler vorliegt und auf der Clientseite beim Einlesen und hin und her Umwandeln.

Hat jemand eine Idee? Bitte etwas Umsicht mit mir, bin noch Anfänger beim Programmieren.

Server


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <sys/socket.h>
#include <sys/types.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <unistd.h>

#define PORT 1234
int x;
char Y[10];


int main()
{
    char DataIN[1024];
    char DataOUT[1024];
   
    printf("Server startet!\n");   
   
    /***** Socket erzeugen *****/
    int ServerSocket = socket(AF_INET6, SOCK_STREAM, 0);
    if (ServerSocket < 0){printf("Erzeugen des Socket fehlgeschlagen!\n"); return EXIT_SUCCESS;}
    else {printf("Socket erzeugt...\n");}
       
    /***** Verbindung herstellen *****/
    struct sockaddr_in6 ServerAddr;

    memset(&ServerAddr, 0, sizeof(ServerAddr));

    ServerAddr.sin6_family = AF_INET6;
    ServerAddr.sin6_port = htons(PORT);
    ServerAddr.sin6_addr = in6addr_any;     

    char ServerIP[16];
    inet_ntop(AF_INET6, &ServerAddr, ServerIP, 16);

    if(bind(ServerSocket, (struct sockaddr*)&ServerAddr, sizeof(ServerAddr)) == -1){
        printf("Fehler beim Binden des Socket!\n"); return EXIT_SUCCESS;}
    else{
        printf("Server bereit!\n IP Adresse = %s Port = %d \n", ServerIP ,PORT); 
        //printf("Server bereit...\n");
        }
       
    if(listen(ServerSocket, 5) == 0){printf("Warte auf Client...\n");}   

    /***** Verbindung mit Client *****/
    struct sockaddr_in6 ClientAddr;
    int addr_size = sizeof(ClientAddr);
       
    int ClientSocket = accept(ServerSocket, (struct sockaddr*)&ClientAddr, &addr_size);
    if (ClientSocket == -1) {printf("Clientanfrage nicht akzeptiert!\n"); return EXIT_SUCCESS;}
       
    printf("Client Anfrage akzeptiert!\n");   
    strcpy(DataOUT, "[SERVER] Anfrage akzeptiert bitte Zahl eingeben!");
    send(ClientSocket, DataOUT, strlen(DataOUT), 0);
   
    recv(ClientSocket, &x, 1024, 0);
    printf("[Client] %d \n", x);

    close(ClientSocket);
    close(ServerSocket);
    return 0;
}

Client

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <sys/socket.h>
#include <sys/types.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <unistd.h>

int x;

int main()
{
    char ServerIP[16];
    int PORTNR;
   
    char DataIN[1024];
    char DataOUT[1024];

    printf("Client startet! \n");
   
    /***** IP Eingabe *****/   
    printf("IP Eingeben: \n");
    fgets(ServerIP, 16, stdin);
    //scanf("%s", ServerIP);

    printf("PortNr Eingeben: \n");
    scanf("%d", &PORTNR);

    /***** Socket erzeugen *****/
    int ClientSocket = socket(AF_INET6, SOCK_STREAM, 0);
    if (ClientSocket < 0){printf("Erzeugen des Socket fehlgeschlagen!\n"); return EXIT_SUCCESS;}
    else {printf("Socket erzeugt!\n Verbindung zu %s :%d wird hergestellt...\n", ServerIP, PORTNR);}
   
    /***** Verbindung herstellen *****/
    struct sockaddr_in6 ServerAddr;
 
    memset(&ServerAddr, 0, sizeof (ServerAddr));
    ServerAddr.sin6_family = AF_INET;
    ServerAddr.sin6_port = htons(PORTNR);
    inet_pton(AF_INET6, "ServerIP", &ServerAddr.sin6_addr);

    if(connect(ClientSocket, (struct sockaddr*)&ServerAddr, sizeof(ServerAddr)) == 0){
    printf("Verbindung zum Server wurde hergestellt!\n");
    }
    else {
        char IP[16];
        inet_ntop(AF_INET6, &ServerAddr, IP, 16);       
        printf("Verbindungsfehler! IP Adresse = %s Port = %d \n", IP ,PORTNR);
        return EXIT_SUCCESS;
        }
   
    for(;;){
        if(recv(ClientSocket, DataIN, 1024, 0) !=0){
            printf("%s\n", DataIN);
            memset(DataIN,0,strlen(DataIN));           
        }
        //if(fgets(DataOUT, 1024, stdin) != 0){send(ClientSocket, DataOUT, strlen(DataOUT), 0);}
        scanf("%d", &x);
        send(ClientSocket, &x, sizeof(x), 0);
       
    }
   
    close(ClientSocket);
    return 0;
}


pn
Gast 
09.11.2021, 11:25
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "IPV6 Server Client Verbindung" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
Technischen Architekten Softwareentwicklung Client/Server (w/m)
Guten Tag, wir suchen für einen unserer Kunden einen Technischen Architekten Softwareentwicklung Client/Server (w/m) Die Deutsche Bahn AG nutzt in vielen Bereichen hochkomplexe, in C/C++ und in anderen Sprachen programmierte Client-Server-Applikationen...
[Jobs & Stellenangebote]von ictjob.de
0
717
20.09.2012, 11:46
ictjob.de
Systemadministrator (m/w) / Client - / Server - und Netzwerkumgebung in Hamburg
Für unser Hamburger Office suchen wir: Systemadministrator (m/w) Ihre Aufgaben Administration unserer Client-, Server- und Netzwerkumgebung User-Helpdesk Installation und Konfiguration von PC's, Laptops, Servern Integration von Mobiltelefonen...
[Jobs & Stellenangebote]von kimjob
0
401
19.03.2013, 11:14
kimjob
Keine Verbindung zum EA-Server
Hallo, bin am verzweifeln.ich weiß auch nicht mehr wohin ich mich wenden soll.hoffe jemand von euch kann mir helfen. Wenn ich online-games mache,fliege ich mitten im spiel immer von den jeweiligen servern. Bei NHL 2010 hab ich auch die PORTS...
von ecn75
7
923
06.03.2010, 09:28
mgutt
Verbindung EXCEL <-> OPC- Server Laufzeitfehler
Hallo zusammen, meine Aufgabe ist es einen OPC-Server for AC800M mit dem Excel zu verbinden. Mit dem Matrikon OPC-Explorer lässt sich die Verbindung erstellen und Variablen können eingelesen werden. Die Verbindung mit dem Excel soll über die Excel:...
[VBA]von Tomtom91
0
387
08.11.2020, 18:17
Tomtom91
Einyelne Verbindung zu einem bestim Server über proxy leiten
Hi, neues Forum, neuer User ^^ passt ja gut! Hallo alle zusammen hab auch gleich mal ne frage, wie mein titel schon beschriebt suche ich ein programm welches eine vom rechner aus ausgehende, bestimmte angewählte IP über einen proxy leitet! wer kann...
von Ceembe
0
1.514
26.04.2008, 19:13
Ceembe
Mssql_connect () Kann keine Verbindung zum Server mit dem Remotehost vom PHP-Hosting her herstellen
Ich habe Arbeit mssql Anschlusscodes und sie arbeiten in meinem anderen Unternehmen PHP-Host aber nicht funktionieren, wenn ich neue Host bewegt. Alle Codes gleichen Ich weiß nicht, warum die Verbindung von neuen Host? In neuen Host mit cpanel und php...
[PHP]von jhienxle
0
488
07.11.2016, 08:00
jhienxle
IPv6
Falls mal jemmand IPv6 testen möchte.... [URL=http://www.maxrev.de/ipv6.html]IPv6...
von Janko
0
196
17.05.2011, 23:20
Janko
 IPv6 DDNS mit Synology NAS (evtl. auf andere NAS/Router übertragbar)
IPv6 DDNS mit Synology NAS Das Synology NAS hat leider nur eine Liste mit vorgegebenen DDNS Services. IPv6 geht zum aktuellen Zeitpunkt gar...
[Allgemein]von mgutt
7
5.943
26.07.2023, 22:26
schmidho
Informatiker / Fachinformatiker (m/w/d) Client Management
Wir suchen für die Abteilung Netzwerke, Systeme und Datendienste innerhalb der Hauptabteilung Billing und IT zum nächstmöglichen Zeitpunkt einen Informatiker / Fachinformatiker (m/w/d) Client Management Wir haben die Energie, Sie bringen die...
[Jobs & Stellenangebote]von kimjob
0
290
09.11.2020, 10:52
kimjob
HBCI Client in PHP realisieren - ohne Java und Co.
Hallo, ich versuche einen HBCI-Client in PHP zu entwickeln. Ich halte euch über die Entwicklung auf dem Laufenden. Derzeit lese ich mich in die Spezifikation von HBCI und FinTS 3.0 ein, da meine Bank diesen Standard unterstützt. Vielleicht wird das...
[PHP]von mgutt
5
5.312
28.08.2013, 06:31
mgutt
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |