C# to Delphi [Résolu]

Pet73 3 Messages postés mercredi 13 avril 2005Date d'inscription 17 novembre 2009 Dernière intervention - 17 nov. 2009 à 12:39 - Dernière réponse : Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention
- 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
zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention - 17 nov. 2009 à 16:08
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

Merci zwyx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

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

Ca existe, ici ?
Commenter la réponse de Caribensila
Aly05 9 Messages postés mercredi 21 septembre 2005Date d'inscription 30 mars 2010 Dernière intervention - 18 nov. 2009 à 01:19
0
Merci
Hello Pet73,

Your code is in C++, not in C#..
Commenter la réponse de Aly05
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 18 nov. 2009 à 01:32
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.