Ankündigung

Einklappen
Keine Ankündigung bisher.

[sockets]

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [sockets]

    wie kann ich eine socketverbindung "annehmen" und einen string zurücksenden??

    meine client programm in c++
    Code:
    int connection(char Send[600])
    {
            int rc;
            SOCKET s;
    	SOCKADDR_IN addr;
            WSADATA wsa;
    
    	WSAStartup(MAKEWORD(2,0),&wsa);
    
            s = socket(AF_INET,SOCK_STREAM,0);
            if(s == INVALID_SOCKET)return 1;
            else{MessageBox(0,"winsock erfolgreich gestartet","erfolg",0);}
    
    
            HOSTENT *he = gethostbyname ("reima.funpic.de");
    	memset(&addr,0,sizeof(addr));
    	addr.sin_addr.S_un.S_un_b.s_b1 = he->h_addr_list[0][0];
    	addr.sin_addr.S_un.S_un_b.s_b2 = he->h_addr_list[0][1];
    	addr.sin_addr.S_un.S_un_b.s_b3 = he->h_addr_list[0][2];
    	addr.sin_addr.S_un.S_un_b.s_b4 = he->h_addr_list[0][3];
    	addr.sin_family=AF_INET;
    	addr.sin_port = htons(80);//wir verwenden mal port 80
    
    
    	char buf[600];
    
    
            rc = connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
    
            if(rc == SOCKET_ERROR){MessageBox(0,"error","error",0);}
            else{MessageBox(0,"verbindung zum server hergestellt","erfolt",0);}
    
    
            send(s,Send,strlen(Send),0);
            recv(s,buf,sizeof(buf),0);
            string x = buf;
    
    
    
    
    
    
            return 0;
    }



    gruss reima

  • #2
    Re: [sockets]

    meinste jetzt in c oder in php..

    ich gehe jetzt ma von c aus.. da du das ja auch in c gepostet hast..
    zwar ins falsche forum..
    hmm.. oder habe ich das jetzt falsch verstanden?!

    senden:
    // in buf ist der text drinne
    Code:
    rc = sendto (s,buf,strlen(buf),0,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
    und empfangen mit:
    Code:
    rc=recvfrom(s,buf,256,0,(SOCKADDR*)&remoteAddr,&remoteAddrLen);

    [edit]
    ich sehe gearde dasse die functionen schon dazu benutzt..
    wie meinste das jetzt genau..???

    Kommentar


    • #3
      ne nur der client ist in c++
      das ist kein problem

      serverseitig mus mit php gearbeitet werden
      der scrypt wird per c++(sockets) aufgeruft und der php scrypt sendet dann eine nachricht zurück

      gruss reima

      Kommentar


      • #4
        http://de.php.net/sockets hier haste nen beispiel

        dafür musste dann halt nen port offen machen

        Kommentar


        • #5
          Zitat von Clan
          http://de.php.net/sockets hier haste nen beispiel

          dafür musste dann halt nen port offen machen
          als adresse muss ich 127.0.0.1 nehmen, oder???

          gruss reima

          Kommentar


          • #6
            jo aber vergiss nicht das script noch anzuschmeissen..

            1. starte das php script..
            das hört dann den port ab und wartet auf irgend ne nachricht.
            dein c++ programm muss sich dann genau auf diese adresse/port verbinden und ne nachricht versenden..

            hier haste nen anderes beispiel..
            http://www.devshed.com/c/a/PHP/Socke...ng-With-PHP/2/

            Kommentar


            • #7
              gut habe den scrytp angeschmissen versucht zu conecten aber das programm kann nicht conecten "stürtzt" mit fehler ab

              hab den port geöffnet und bei auf den port 10000 gesellt
              oder muss ich beim c++ programm auch eine "blind" socket nehmen?
              (siehe oben)

              gruss reima

              Kommentar


              • #8
                habe mal folgendes ausprobiert an meiner seite ipm-networks.de, was auch klapt.
                ich bekomme da natürlich nix an daten zurück.. wgort 80
                alle anderen ports sind da auch gespeert

                Code:
                #include <winsock2.h>
                #include <stdio.h>
                #include <stdlib.h>
                
                
                int main()
                {
                   int rc;
                   SOCKET s;
                   SOCKADDR_IN addr;
                   SOCKADDR_IN remoteAddr;
                   WSADATA wsa;
                   char buf[256];
                   int  remoteAddrLen=sizeof(SOCKADDR_IN);
                
                   WSAStartup(MAKEWORD(2,0),&wsa);
                
                        s = socket(AF_INET,SOCK_STREAM,0);
                        if(s == INVALID_SOCKET)return 1;
                        else{MessageBox(0,"winsock erfolgreich gestartet","erfolg",0);}
                
                
                
                   // addr vorbereiten
                  addr.sin_family=AF_INET;
                  addr.sin_port=htons(80);
                  addr.sin_addr.s_addr=inet_addr("62.67.200.62"); //www.ipm-networks.de
                
                        rc = connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
                
                        if(rc == SOCKET_ERROR){MessageBox(0,"error","error",0);}
                        else{MessageBox(0,"verbindung zum server hergestellt","erfolt",0);
                		}
                
                	while(1)
                  {
                    printf("Text eingeben: ");
                    gets(buf);
                    rc=sendto (s,buf,strlen(buf),0,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
                    if(rc==SOCKET_ERROR)
                    {
                      printf("Fehler: sendto, fehler code: %d\n",WSAGetLastError());
                      return 1;
                    }
                    else
                    {
                      printf("%d Bytes gesendet!\n", rc);
                    }
                
                    rc=recvfrom(s,buf,256,0,(SOCKADDR*)&remoteAddr,&remoteAddrLen);
                    if(rc==SOCKET_ERROR)
                    {
                      printf("Fehler: recvfrom, fehler code: %d\n",WSAGetLastError());
                      return 1;
                    }
                    else
                    {
                      printf("%d Bytes empfangen!\n", rc);
                      buf[rc]='\0';
                      printf("Empfangene Daten: %s\n",buf);
                    }
                  }
                 return 0;
                 }

                Kommentar


                • #9
                  danke für den code, werd ihn mal anschauen
                  noch so am rande: was ist das für ein Compiler/Ide mit prinf und Messagebox's??

                  gruss reima

                  Kommentar


                  • #10
                    Zitat von Clan
                    habe mal folgendes ausprobiert an meiner seite ipm-networks.de, was auch klapt.
                    ich bekomme da natürlich nix an daten zurück.. wgort 80
                    alle anderen ports sind da auch gespeert

                    du meinst die ports sind serverseitg gesperrt???

                    gruss reima

                    Kommentar


                    • #11
                      Zitat von reima
                      Zitat von Clan
                      habe mal folgendes ausprobiert an meiner seite ipm-networks.de, was auch klapt.
                      ich bekomme da natürlich nix an daten zurück.. wgort 80
                      alle anderen ports sind da auch gespeert

                      du meinst die ports sind serverseitg gesperrt???

                      gruss reima
                      jup bei mir isset aufjedenfall so..
                      und das kann man auch aufjedenfall einstellen.

                      printf s.h. http://userpage.fu-berlin.de/~ram/pu..._argumenten_de

                      programm + compiler ist lccwin32

                      Kommentar


                      • #12
                        was printf für eine funktion ist ist mir schon klar
                        aber ich hab das noch nie im zusammenhang mit msgboxen gesehen

                        über port 80 läuft alles wunderbar (war schon immer so)
                        aber sobald ich einen anderen port nehme, verbindet er nicht mehr mit dem server.

                        ports habe ich offen
                        was mach ich falsch?

                        Kommentar


                        • #13
                          Zitat von reima
                          was printf für eine funktion ist ist mir schon klar
                          aber ich hab das noch nie im zusammenhang mit msgboxen gesehen

                          über port 80 läuft alles wunderbar (war schon immer so)
                          aber sobald ich einen anderen port nehme, verbindet er nicht mehr mit dem server.

                          ports habe ich offen
                          was mach ich falsch?
                          achso.. *g*
                          also versuch mal folgendes..
                          ich habe hier mal irc.quakenet.eu.org angesprochen und auch daten bekommen..

                          Code:
                          #include <winsock2.h>
                          #include <stdio.h>
                          #include <stdlib.h>
                          
                          
                          int main()
                          {
                             int rc;
                             SOCKET s;
                             SOCKADDR_IN addr;
                             SOCKADDR_IN remoteAddr;
                             WSADATA wsa;
                             char buf[256];
                             int  remoteAddrLen=sizeof(SOCKADDR_IN);
                          
                             WSAStartup(MAKEWORD(2,0),&wsa);
                          
                                  s = socket(AF_INET,SOCK_STREAM,0);
                                  if(s == INVALID_SOCKET)return 1;
                                  else{MessageBox(0,"winsock erfolgreich gestartet","erfolg",0);}
                          
                          
                          
                          
                             // addr vorbereiten
                            addr.sin_family=AF_INET;
                            addr.sin_port=htons(6667);
                            addr.sin_addr.s_addr=inet_addr("80.64.11.110");//irc.quakenet.eu.org
                          
                                  rc = connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
                          
                                  if(rc == SOCKET_ERROR){MessageBox(0,"error","error",0);}
                                  else{MessageBox(0,"verbindung zum server hergestellt","erfolt",0);
                          		}
                          
                          	while(1)
                            {
                          
                          
                              rc=recvfrom(s,buf,256,0,(SOCKADDR*)&remoteAddr,&remoteAddrLen);
                              if(rc==SOCKET_ERROR)
                              {
                                printf("Fehler: recvfrom, fehler code: %d\n",WSAGetLastError());
                                return 1;
                              }
                              else
                              {
                                printf("%d Bytes empfangen!\n", rc);
                                buf[rc]='\0';
                                printf("Empfangene Daten: %s\n",buf);
                              }
                            }
                           return 0;
                           }
                          wenn dies bei dir genauso klappen sollte überprüfe mal deine apache configuration..
                          s.h. http://httpd.apache.org/docs-2.0/bind.html

                          du kannst auch mit folgenden tool nen port scan durchführen, um zu überprüfen ob ports offen sind
                          http://www.brain-pro.de/Seiten/nmap/nmap.htm

                          wenne nen router haben solltest passiert
                          http://www.phpforum.de/archiv_11221_..._anzeigen.html

                          Kommentar


                          • #14
                            ermals thx.

                            hab die lösung gefunden:
                            die haben schon seit ca 1/2 jahr die sockets unterstützung geaktiviert...

                            jetztt muss ich es wohl anders versuchen....mit wininet oder


                            gruss reima

                            Kommentar

                            Lädt...
                            X