Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
6487 connectés 

 


Dernière réponse
Sujet : [Kylix] Creation de socket.....
antp peut-être gethostbyname(PChar(host)); si jamais la fonction s'attend à avoir un pointeur de chaîne de caractère style C.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
antp peut-être gethostbyname(PChar(host)); si jamais la fonction s'attend à avoir un pointeur de chaîne de caractère style C.
lpoziggy G trouvé un truc :
 
var
adresse : sockaddr_in;
resultat, longueur_adr : integer;
hostname : hostent;
const
host : string = 'adresse ip du serveur';
 
sockfd := socket(AF_INET, SOCK_STREAM, 0);
 
hostname := gethostbyname(host);
adresse.sin_family := AF_INET;
adresse.sin_port := 9734;
adresse.sin_addr := inet_addr(hostname);
.
.
.et apres la connexion!!
.
 
Mais c là ou c'est en gras ke sa plante!!
Il faut mettre un pointeur qq part!!
lpoziggy Ouais je sais que c la declaration en C, mais je dois me démerder a ecrire tout ce bordel en pascal!!
Il ny a aucune autre aide que ce forum!!
 :gun:
antp ouais mais ça c'est la déclaration en C de la fonction... y a bien une déclaration en Pascal quelque part...
lpoziggy Ben en fait, Nibblet et moi on est les 2 seuls gars qui sommes sur Kylix!!!  :cry:  :cry:  
 
Fonction connect:
int connect(int sockfd, struct sockaddr *serveuraddr, int longueur_addr)
 
sockfd est le descripteur de socket  
serveuraddr est un pointeur sur une structure d'addresse de socket ki indike ladresse de destination avec lakelle le socket doit se connecter
longueur_addr est la taille de la structure d'adresse
 
 :cry:  :cry:
antp un truc du genre, faut tester jusqu'à ce que ça passe, ou trouver quelqu'un qui est habitué à utiliser les pointeurs en pascal :D
la déclaration de la fonction connect, ca ressemble à quoi ?
et la declaration de adresse ?
lpoziggy Donc je devrai ecrire:
connect(sockfd, sockaddr(@adresse)^, longueur_adr)???
antp sockaddr_in(@adresse)^
ou un truc du genre
 
& -> @
* -> ^
lpoziggy nan, serieux, je dois ecrire koi,,?
gaetan7

lpoziggy a écrit a écrit :

G encore un probleme:
c'est lors de la connection au serveur, en C sa donne :
 
int resultat = connect(sockfd, (struct sockaddr *)&adresse, longueur_adr);
 
Comme je suis sous linux en pascal, le compilateur ne capte pas le truc en gras!!
 :gun:  




de toutes façons pascal c kun enculé de vieux

rellikk

lpoziggy a écrit a écrit :

Salut,
g un ptit probleme:
je dois realiser une application client serveur avec des sockets.
Je sais les faire en C mais pas vraiment en pascal!
 
ex:
 
  var sockfd, longueur_adr : integer;
      adresse : struct sockaddr_un   <-- c ici ke sa plante!!
begin
 
  sockfd := socket (AF_UNIX,SOCK_STREAM, 0);
  adresse.sun_family = AF_UNIX;
  .
.
.
.
.
.
end.
 
Si qq1 a une soluce ca serait cool!!  



lpoziggy G encore un probleme:
c'est lors de la connection au serveur, en C sa donne :
 
int resultat = connect(sockfd, (struct sockaddr *)&adresse, longueur_adr);
 
Comme je suis sous linux en pascal, le compilateur ne capte pas le truc en gras!!
 :gun:
lpoziggy bon ben si qq1 a une idee sur un sujet qqonque, il n'a ka poster ici!!
lpoziggy up, qq1 veut en discuter??
 :??:
lpoziggy sisi mais g envies de continuer a debattre sur ce sujet!!
antp up ? c'est pas résolu ?
lpoziggy up
lpoziggy Yop, chui rentre du ski!
encore une semaine de vacances avant de revenir a ces pt1 de socket!!
lpoziggy ouep, sa marche kan je mets libc dans uses!!!
sa rulez du tonnerre!!
maintenant jvé voir pour u ou i!!
:D
antp ha bon...
 
dans kylix y a une unit "libc" que tu peux peut-être aller voir...
lpoziggy ben c u comme unix!!
ou alors i comme inet!
ok jvé voir mais sa commence a menerver
en plus demain c les vacances et moi je pars o ski!!
antp bhen cherche dans l'aide dans quoi est déclaré sockaddr_in (ou un truc du genre, c'est quoi ça _un ? même sous linux j'ai tj utilisé _in)
lpoziggy up
lpoziggy Desolé Gaetan mais g pris ton pseudo pour le post d'avant!!
Donc je voulais dire que je suis sous linux et kylix ne reconnais pas idwinsock --> ce ki me parait normal puiskil y a win dedans!!
mais c sympa de maider antp!!
 :sweat:
gaetan7 heuu.... ok merci!
mais sous linux ce serait pas plutot sockaddr_un avec un u au lieu du i  ???
gaetan7 sinon, tu vas boire une bonne bière en pensant au ski que tu feras dem1
antp c'est du pascal, pas du C
en pascal y a pas de struct
vu que sockaddr_in est définir comme ceci:
 

Code :
  1. sockaddr_in = record
  2.   case Integer of
  3.     0: (sin_family: u_short;
  4.         sin_port: u_short;
  5.         sin_addr: TInAddr;
  6.         sin_zero: array[0..7] of Char);
  7.         sa_family: u_short;
  8.         sa_data: array[0..13] of Char) end;
  9.         WSAData=recordwVersion: Word;
  10.         wHighVersion: Word;
  11.         szDescription: array[0..WSADESCRIPTION_LEN] of Char;
  12.         szSystemStatus: array[0..WSASYS_STATUS_LEN] of Char;
  13.         iMaxSockets: Word;
  14.         iMaxUdpDg: Word;
  15.         lpVendorInfo: PChar;);
  16.   end;


 
en marquant ceci ça doit passer :
 

Code :
  1. addresse: sockaddr_in;


 
sous Delphi faut rajouter IdWinsock dans les uses, c pareil pour kylix je pense...

 

[edtdd]--Message édité par antp--[/edtdd]

lpoziggy haha megalol!!
en C, il faut rajouter les includes sys/types.h, sys/socket.h, sys/un.h
 
Mais avec kylix je sais pas koi ajouter!!
 :cry:  :cry:
The Real Mask format c:  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 :ouch: aucune id juste un petit up :) [:the real mask]
lpoziggy Salut,
g un ptit probleme:
je dois realiser une application client serveur avec des sockets.
Je sais les faire en C mais pas vraiment en pascal!
 
ex:
 
  var sockfd, longueur_adr : integer;
      adresse : struct sockaddr_un   <-- c ici ke sa plante!!
begin
 
  sockfd := socket (AF_UNIX,SOCK_STREAM, 0);
  adresse.sun_family = AF_UNIX;
  .
.
.
.
.
.
end.
 
Si qq1 a une soluce ca serait cool!!

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)