C# to Delphi [Résolu]

Signaler
Messages postés
3
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
17 novembre 2009
-
Caribensila
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
-
Hi for All,
I have the following C# code my aim is to convert it to Delphi :

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <ctype.h>
#include <string.h>
#include <errno.h>
#include <sys/param.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <netdb.h>

#include

#define BUFSIZE 216 /* size of message buffer */

void usage(char *progname)
{
printf("usage: %s [-h host] [-p port]\n", progname);
exit(EXIT_FAILURE);
}

int main(int argc, char *argv[])
{
char *host = "localhost";
int port = 6661;
int fd;
struct hostent *hostentry = NULL;
struct sockaddr_in addr;
int n;
int c, errflg = 0;
char buffer[BUFSIZE];
char header[7];
char ibuffer[256];
FILE *f = freopen("/home/cmstest/iofiles/massive/pending/T","w",stderr);

memset(ibuffer, 0, 256);
memset ( header, 0, sizeof ( header ));
header[0] = ((strlen(argv[5])+4)/256);
header[1] = ((strlen(argv[5])+4)%256);
memcpy ( header + 2 , "1234", 4);
memcpy ( ibuffer ,header , 6);
memcpy ( ibuffer + 6 ,argv[5] ,strlen(argv[5]));
while ((c=getopt(argc, argv, "h:p:")) != -1) {
switch(c) {
case 'h': /* server host name */
host = optarg;
break;
case 'p': /* server port */
port = atoi(optarg);
break;
default: /* the rest are errors */
errflg++;
break;
}
}

if (host NULL || port 0 || errflg) {
usage(argv[0]);
}

signal(SIGPIPE, SIG_IGN);

/* create a TCP socket */
if ((fd=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
printf("sock00:socket error %d\n", errno);
exit(EXIT_FAILURE);
}


/* connect to the socket server */
memset(&addr, 0, sizeof(struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_port = htons(port);

if (strcmp(host, "any") == 0) {
addr.sin_addr.s_addr = htonl(INADDR_ANY);
} else if (strcmp(host, "loopback") == 0) {
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
} else {
if ((hostentry gethostbyname(host)) NULL) {
printf("sock00:invalid hostname "%s"\n", host);
exit(EXIT_FAILURE);
}
memcpy(&addr.sin_addr.s_addr, hostentry->h_addr, hostentry->h_length);
}



if (connect(fd, (struct sockaddr *)&addr,
sizeof(struct sockaddr)) < 0) {
printf("sock00:connect error %d\n", errno);
exit(EXIT_FAILURE);
}

if (send(fd, ibuffer, sizeof(ibuffer), 0) <= 0) {
printf("sock00:send error %d\n", errno);
exit(EXIT_FAILURE);
}

memset(buffer, 0, sizeof(buffer));
/* fprintf(stderr,"\nCMD :%s\n",ibuffer+6); */
if ((n = recv(fd, buffer, sizeof(buffer), MSG_WAITALL)) < 0) {
printf("recv error %d\n", errno);
exit(EXIT_FAILURE);
}
/* printf("%s\n",buffer+6 ) ;*/
fprintf(stderr,"%s\n",buffer+10);
close(fd);

return EXIT_SUCCESS;
}

Any help would be appreciated
Thanks

10 réponses

Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016

Si je ne me trompe, en Delphi, on n'a pas besoin de s'embêter avec la taille des objets que l'on manipule, il suffit de les créer et de les détruire au bon moment.

Sinon, tu le transcrit en langage assembleur, et tu pourras l'intégrer dans un programme Delphi.

Kind regards
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
On ne demande pas de code tout fait.
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
5
il va pas comprendre julio !
"We don't dimennde ze code all fact"
pas de moquerie, c'est une blague. J'suis pas autant une buse que ca en anglais
Messages postés
3
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
17 novembre 2009

Thank you Julio for your quick answer, Ok I see
just memset and memcpy and this statement :

header[0] = ((strlen(argv[5])+4)/256);
header[1] = ((strlen(argv[5])+4)%256);

Cheers
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
5
header[0] = ((Length(argv[5])+4) div 256);
header[1] = ((Length(argv[5])+4) mod 256);
Messages postés
3
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
17 novembre 2009

Many Thanks for your Help
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
6
Si tu sais parler en français, car il "semblerait" que tu comprennes les réponses, tu peux le faire, c'est pas interdit sur un forum français

Cordialement, Bacterius !
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
13
Une question en français ???!!!

Ca existe, ici ?
Messages postés
8
Date d'inscription
mercredi 21 septembre 2005
Statut
Membre
Dernière intervention
30 mars 2010

Hello Pet73,

Your code is in C++, not in C#..
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
13
@ Aly05
On s'en fout.
Venu acheter du Delphi, il repart avec de l'assembleur... Et il est content !