Announcement

Collapse
No announcement yet.

Verbindung zu einem Rechner herstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Verbindung zu einem Rechner herstellen

    Hi liebe Entwicklergemeinde,
    Ich fange gerade an mich in C++ einzuarbeiten, bitte nicht schimpfen :-).
    Ich sitze hier an einem Problem, ich möchte dass einer gewissen IP Adresse an einem bestimmten Port eine mehrzeilige Folge von Zeichen gesendet wird. Also habe ich versucht mich durchzulesen, verstehe aber nun gar nichts mehr bzw. bin zu blöd das unter einer Form Anwendung (Welche ein INPUT und BUTTON Feld besitzt) zum laufen zu bringen.
    Vereinfacht gesagt: Ich möchte das z.B. an die Adresse 192.168.1.1
    "123456789"
    "123456789"
    gesendet wird.
    Kann mir jemand einen kleinen Anstoss, evt. einen Beispielcode machen wie ich dies am einfachsten verwirklichen kann?
    Euer,
    Anybody
    Zuletzt editiert von Christian Marquardt; 08.09.2009, 20:20. Reason: Überschrift geändert

  • #2
    Etwas an eine IP Adressen senden dürfte relativ sinnlos sein. Dazu gehört, dass an der IP-Adresse an einem Port jemand da ist, der die Zeichen in Empfang nehmen kann. Am Besten noch in einem allg. Format (HTTP, FTP, NMTP, SMTP, POP3 u.v.m)

    Des Weiteren benutze eine aussagekräftige Überschift. Üblicherweise posten die meisten hier, weil sie Hilfe benötigen
    Christian

    Comment


    • #3
      Über den Sinn dieser Aktion könnten wir jetzt lange diskutieren, aber das hätte eh keinen Sinn :-)
      Ja, an der anderen Seite ist jemand der das Signal entgegennimmt, das sollte eigentlich nicht das grösste Problem sein. Nur, wie sende ich diese Kommandos jetzt?

      Comment


      • #4
        Na, wenn es sinnlos ist, das Protokoll zu erfahren

        http://www.google.de/search?sourceid...programmierung
        Christian

        Comment


        • #5
          Das Protokoll das ist AFAIK normales TCP/IP. In anderen Programmiersprachen z.B. Python reicht dazu ein simples :
          Code:
          Send_To = "192.168.1.1"
          Sende= (
          "123456789"
          "123456789"
          )
          s = socket()
          s.connect(Send_To)
          s.send(Sende)
          s.close()
          War es das was du von mir wissen wolltest?

          Comment


          • #6
            Schon der erste Treffer des google Link sollte dir helfen
            Christian

            Comment


            • #7
              Ehrlich gesagt begreife ich den Text da nicht so ganz.
              So verursacht schon dieser Schritt in einer Konsolen Anwendung einen Error...
              Code:
              #include "stdafx.h"
              #include "winsock.h"
              using namespace System;
              
              int main(array<System::String ^> ^args)
              {
              		WSADATA wsa;
              		if (WSAStartup(MAKEWORD(1, 1), &wsa))
              		{
              			printf("WSAStartup() failed, %lu\n", (unsigned long)GetLastError());
              			return EXIT_FAILURE;
              		}
              }
              Ich sehe beim besten Willen den Fehler nicht, vorallem da ja eigentlich noch gar nichts erledigt wurde.

              Comment


              • #8
                Du solltest schon LESEN was dort steht. Und der o.a. Quelltest steht so überhaupt nicht da.

                Mit obigem Text wird lediglich WSAStartup erklärt. Wenn du das einfach aus dem Zusammenhang reisst und nichtmal &wsa deklarierst, ist es kein Wunder, dass Fehler auftreten
                Christian

                Comment


                • #9
                  Jetzt lese ich den Text seit fast 40 Minuten und begreife immer noch nicht was ich tun muss:
                  1. WSAStartup() - Wie genau starte ich das und wo gehört das rein?
                  2. char buffer[] = "Willkommen zu dem Test-Server\r\n";
                    bytes = send(s, buffer, strlen(buffer), 0);
                    Wie stelle ich es ein das mehere Zeilen einzeln hintereinander übergeben werden?

                  Comment


                  • #10
                    1. Vor der Nutzung der Socketbefehle
                    2. diesen vorgang wiederholen
                    Christian

                    Comment


                    • #11
                      Irgendwie bin ich zu blöd dafür...
                      Code:
                      #pragma once
                      #include <winsock.h>
                      #include <sys/types.h>
                      #include <sys/socket.h>
                      #include <netinet/in.h>
                      
                      
                      
                      namespace connect_test {
                      
                      	using namespace System;
                      	using namespace System::ComponentModel;
                      	using namespace System::Collections;
                      	using namespace System::Windows::Forms;
                      	using namespace System::Data;
                      	using namespace System::Drawing;
                      
                      	public ref class Form1 : public System::Windows::Forms::Form
                      	{
                      	public:
                      		Form1(void)
                      		{
                      			InitializeComponent();
                      			//
                      			//TODO: Konstruktorcode hier hinzufügen.
                      			//
                      		}
                      
                      	protected:
                      		/// <summary>
                      		/// Verwendete Ressourcen bereinigen.
                      		/// </summary>
                      		~Form1()
                      		{
                      			if (components)
                      			{
                      				delete components;
                      			}
                      		}
                      	private: System::Windows::Forms::Button^  button1;
                      	private: System::Windows::Forms::TextBox^  textBox1;
                      	private: System::Windows::Forms::Label^  label1;
                      	private: System::Windows::Forms::Label^  label2;
                      	private: System::Windows::Forms::Label^  label3;
                      	protected: 
                      
                      	private:
                      	
                      		void InitializeComponent(void)
                      		{
                      			// Code für die Formulare
                      		}
                      #pragma endregion
                      	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                      	if (textBox1->Text == "")
                      MessageBox::Show("Textbox 1 ist leer!");
                       if (textBox1->Text != "")
                      	{
                      		WSADATA wsa;
                      		if (WSAStartup(MAKEWORD(1, 1), &wsa))
                      		{
                      			printf("WSAStartup() failed, %lu\n", (unsigned long)GetLastError());
                      			return EXIT_FAILURE;
                      		}
                      	
                      
                      s = socket(AF_INET, SOCK_STREAM, 0);
                      if (s == -1)
                      {
                      	perror("socket() failed");
                      	return 1;
                      }
                      struct sockaddr_in addr {
                          short int		sin_family; 
                          unsigned short int	sin_port;    
                          struct in_addr	sin_addr;    
                      };
                      addr.sin_addr.s_addr = 127.0.0.1	
                      addr.sin_port = 80 		
                      addr.sin_family = AF_INET;
                      
                      if (connect(s, &addr, sizeof(addr)) == -1)
                      {
                      	perror("connect() failed");
                      	return 2;
                      }
                      int bytes;
                      	char buffer[] = "Willkommen zu dem Test-Server\r\n";
                      	bytes = send(s, buffer, strlen(buffer), 0);
                      	return 0,
                      
                      
                      	}
                      
                        MessageBox::Show("Textbox 1 ist nicht leer, Befehl wurde ausfgefüllt)");
                      			 }
                      	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
                      			 }
                      	private: System::Void label1_Click(System::Object^  sender, System::EventArgs^  e) {
                      			 }
                      	private: System::Void label2_Click(System::Object^  sender, System::EventArgs^  e) {
                      			 }
                      private: System::Void label3_Click(System::Object^  sender, System::EventArgs^  e) {
                      		 }
                      };
                      }

                      Comment

                      Working...
                      X