C# to Delphi [Résolu]

Messages postés
3
Date d'inscription
mercredi 13 avril 2005
Dernière intervention
17 novembre 2009
- - Dernière réponse : Caribensila
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
- 18 nov. 2009 à 01:32
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
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Dernière intervention
21 mars 2016
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de zwyx
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
18 novembre 2010
0
Merci
On ne demande pas de code tout fait.
Commenter la réponse de JulioDelphi
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
0
Merci
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
Commenter la réponse de Guillemouze
Messages postés
3
Date d'inscription
mercredi 13 avril 2005
Dernière intervention
17 novembre 2009
0
Merci
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
Commenter la réponse de Pet73
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
0
Merci
header[0] = ((Length(argv[5])+4) div 256);
header[1] = ((Length(argv[5])+4) mod 256);
Commenter la réponse de Guillemouze
Messages postés
3
Date d'inscription
mercredi 13 avril 2005
Dernière intervention
17 novembre 2009
0
Merci
Many Thanks for your Help
Commenter la réponse de Pet73
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
0
Merci
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 !
Commenter la réponse de Bacterius
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
0
Merci
Une question en français ???!!!

Ca existe, ici ?
Commenter la réponse de Caribensila
Messages postés
9
Date d'inscription
mercredi 21 septembre 2005
Dernière intervention
30 mars 2010
0
Merci
Hello Pet73,

Your code is in C++, not in C#..
Commenter la réponse de Aly05
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
0
Merci
@ Aly05
On s'en fout.
Venu acheter du Delphi, il repart avec de l'assembleur... Et il est content !
Commenter la réponse de Caribensila

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.