pb tcp ip sur le port 515 (printer) - C - Programmation
Marsh Posté le 29-06-2004 à 20:21:39
il me semble qu'avec les *nix, seuls les administrateurs peuvent ouvrir des ports < 1000 ? a confirmer
Marsh Posté le 30-06-2004 à 13:26:56
et si tu fais un telnet sur le port 515 de la machine qui fait tourner ce programme, puis que tu envoies des données dans cette session telnet, il ne se passe toujours rien?
Rien de tel qu'un telnet pour vérifier si un serveur réponds bien comme on le pense. C'est sûr qu'après, on ne peut pas envoyer de données binaires, mais au moins tu verras si la connexion est ok.
edit:typo
Marsh Posté le 30-06-2004 à 14:14:52
BlackGoddess a écrit : il me semble qu'avec les *nix, seuls les administrateurs peuvent ouvrir des ports < 1000 ? a confirmer |
1024 en fait (si je me plante c'est l'air con )
Marsh Posté le 30-06-2004 à 14:31:25
La connexion est ok mais le serveur ne renvoie pas de reponse
Marsh Posté le 01-07-2004 à 09:08:16
de quel serveur parles tu (histoire d'être sûr qu'on parle bien de la même chose)?
Dans le code que tu as donné, ton process lit les données et ferme la connexion, mais n'envoie pas de réponse. Donc soit tu t'embrouilles les neurones, soit tu nous donne un code cohérent.
Marsh Posté le 01-07-2004 à 11:01:51
Pour moi le serveur est l'application dont j'ai donné le code.C'est le simulateur de l'imprimante.
Marsh Posté le 01-07-2004 à 12:02:03
la fonction accept retourne un descripteur de connection qui est utilisee pour la communication avec le nouveau client.
Marsh Posté le 01-07-2004 à 13:10:53
tu attends quoi comme réponse? ton code ne montre *rien* qui ressemble à une réponse.
Marsh Posté le 01-07-2004 à 14:14:39
Oui je crois que tu a raison!!!!
Tu mettrais qupoi pour renvoyer une reponse un write
Je te demande ca car je n'y connais rien en reseau.merci
Marsh Posté le 01-07-2004 à 16:06:24
send
Code :
|
Marsh Posté le 02-07-2004 à 07:59:37
merci pour ta reponse SoWhatln22.Cependant je ne peux la tester que lundi je tedirais alors si ca marche .A+
Marsh Posté le 06-07-2004 à 11:52:28
alors remplace
Code :
|
par
Code :
|
et
Code :
|
par
Code :
|
d'ailleurs le bout de code que je t'ai filé ne devait même pas compiler, je ne sais pas comment tu fais.
Marsh Posté le 07-07-2004 à 08:04:09
merci je vais tester ces nouvelles commandes. Pour ce qui est de la compilation il n'y avait aucun pb j'ai juste rajouter des parenthèses.
Marsh Posté le 29-06-2004 à 16:20:28
Bonjour, je dois porgrammer un simulateur d'imprimante.j'ai déja tout programmé il me reste que la liaison a mettre en place;je veut mettre en place une liaison ethernet.
pour cela je dois ecouter le port 515.
En effet je travaille sous linux et je dois recuperer ce que m'envoit lpd . Voici mon code :#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/un.h>
#include <stdio.h>
#define MAXLINE 4096
#define MASOCKET 515
int main(int argc, char **argv)
{
int listenfd, connfd;
struct sockaddr_in servaddr;
char buff[MAXLINE];
time_t tics;
if ((listenfd = socket(AF_INET, SOCK_STREAM, 0))<0)
{
perror("socket error" );
exit(1);
}
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(MASOCKET);
if (bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0)
{
perror("bind error" );
exit(1);
}
if (listen(listenfd, 5) < 0)
{
perror("listen error" );
exit(1);
}
while (1)
{
if ((connfd = accept(listenfd, (struct sockaddr *) NULL, NULL)) < 0)
{
perror("accept error" );
exit(1);
}
read(connfd, buff, strlen(buff))
// recuperation des données
close(connfd);
}
}
en fait il ne se passe rien quand j'envoit la commande lp toto.txt par exemple.
Je ne comprend car mon prog fonctionne sur un numero de port différent.