Autor Beitrag
schlumpf70
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Do 18.08.05 13:48 
hallo folgendes prob hab paar zeilen code den ick in delphi benötige abe rnit weiss wie ick det umsetzen kann :(

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
unsigned char teil1[] =
"\x00\x00\x00\x85\xFF\x53\x4D\x42\x72\x00\x00\x00\x00\x18\x53\xC8"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFE";

#define SET_PORTBIND_PORT(buf, port) \
*(unsigned short *)(((buf)+186)) = (port)

#ifdef _WIN32
WSADATA wsa;
WSAStartup(MAKEWORD(2,0), &wsa);
#endif


if ((he = gethostbyname(argv[1])) == NULL) {
printf("[-] Unable to resolve %s\n", argv[1]);
exit(0);
}



if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
printf("[-] socket failed\n");
exit(0);
}

addr.sin_family = AF_INET;
addr.sin_port = htons(445);
addr.sin_addr = *((struct in_addr *)he->h_addr);
memset(&(addr.sin_zero), '\0', 8);


if (connect(sockfd, (struct sockaddr *)&addr, sizeof(struct sockaddr)) < 0) {
printf("\n[-] connect failed\n");
exit(0);
}


if (send(sockfd, test1, sizeof(test1)-1, 0) < 0) {
printf("\n[-] send failed\n");
exit(0);
}

len = recv(sockfd, recvbuf, 4096, 0);
if ((len <= 10) || (recvbuf[9] != 0)) {
printf("\n[-] failed\n");
exit(0);
}



recv(sockfd, recvbuf, 4096, 0);




bin für jede hilfe dankbar

Moderiert von user profile iconMotzi: Code-Tags hinzugefügt.
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Do 18.08.05 13:56 
Woher weisst du, dass du genau diesen Code in Delphi benötigst?
Warscheinlich benötigst du vielmehr die Funktionalität, die darin steckt. Wenn du aber nicht weisst, was der Code tut, woher weisst du, dass du ihn brauchst?
Wenn du weisst, was er tut, dann sollte es ja möglich sein, das ganze in Delphi selbst zu bauen. Wenn dabei spezifische Fragen aufkommen, kann man dir sicherlich auch gerne helfen.

_________________
Bravery calls my name in the sound of the wind in the night...
schlumpf70 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Do 18.08.05 14:03 
hmmm also es geht um ne verbindung zu nen server auf nen pestimmten port und für die anmelödung muss er diese zeilen senden, da ick von c++ so gut wie keine ahnung hab aber ein programm aufsetzen möchte in delphi habe ich gedacht ick frag ma hier *denk
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Do 18.08.05 14:10 
Geht doch :)

Beliebt für Netzwerkgeschichten mit Delphi sind allgemein die Indy-Komponeten, es taugen aber auch jegliche anderen Socket-Komponenten. Welche bei deiner Delphi-Version dabei sind, wirst du einfach nachsehen müssen.

Als nächstes schau dir die Postings im Netzwerk-Bereich des DF an, da wirst du bestimmt fündig, wie du mittels der Komponenten ne Verbindung zum Server aufbaust. Oder nimm die online-Hilfe, die reicht meistens aus.

Ich halte es generell für keine gute Idee, ein Stück Code aus Sprache a nach Sprache b zu 'übersetzen', das geht oft genug in die Hose.

Da du ja weisst, was du tun willst, wirf den C++-Code ( bis auf die String-Konstante am Anfang ) weg und bau den Kram in Delphi neu.

_________________
Bravery calls my name in the sound of the wind in the night...
schlumpf70 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Do 18.08.05 14:19 
jo nur kann ick diese string konstanten als string senden oder baut c++ das um ? das is eigentlich das wichtigste wei lsonnst würde icks denk ick hinkriegen nur die frage muss ich binden ? also wen nich verbunden bin also nach connect die ip und port vom server an meine componente z.b. indi binden ?
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Do 18.08.05 14:24 
Der String besteht aus ner Reihe Hex-Ziffern ( \x steht für Hex, wenn ich nicht irre ). Was genau der Server da haben will, musst du bei demjenigen erfragen, der den Server gebaut hat. Im Zweifel halt verschiedenes ausprobieren.

Nen bind-aufruf brauchst du bei nem Client idR nicht. Versuchs erstmal ohne.

_________________
Bravery calls my name in the sound of the wind in the night...
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Do 18.08.05 14:38 
Selam!

Du kannst o.g. Code nahezu 1 zu 1 übernehmen:

ungetestet:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
uses
  winsock;

[...]

var
  test1  : String;
  wsa    : WSADATA;
  he     : phostent;
  sockfd : integer;
  addr   : TSockAddrIn;
  len    : Integer;
  recvbuf: String;
begin
  test1 := 'dingens';

  WSAStartup(MAKEWORD(2,0), wsa);

  he     := gethostbyname('');
  sockfd := socket(AF_INET, SOCK_STREAM, 0);

  addr.sin_family := AF_INET;
  addr.sin_port   := htons(445);
  addr.sin_addr   := in_addr(he.h_addr);
  FillChar(addr.sin_zero, 8#0);

  if connect(sockfd, addr, sizeof(addr)) < 0 then
    Writeln('connect faild');

  if send(sockfd, test1, Length(test1) - 10) < 0 then
    WriteLn('send faild');

  len := recv(sockfd, recvbuf, 40960);
  if (len <= 10or (recvbuf[9] <> #0then
    Writeln('faild');
     
  WSACleanup();


Bis neulich ...