Hilfe! C/C++ unter LINUX

kiteflyer

Grünschnabel
hi Leute wie gehts euch?

ich hatte davor von ein netten User ein Programm bekommen (aber unter WINDOWS geschrieben)! und ich habe es so über nommen das es normaler weisse unter LINUX
"auch" funktionieren sollte!

aber leider ist es nicht so :(
und jetzt setze ich schon seit 2 1/2 woche schon daran und weiss langsam aber
sicher nicht mehr weiter.

denn das komische daran ist das es keine Fehler meldungen gibt und es läss sich wunderbar den Programm auf zurufen. ich kann mit mit hilfe Telnet zwar auf dem Port 162 zugreifen aber das Programm gibt nicht das aus, was auf dem Port 162 ist!

und jetzt brauche ich unbedingt hilfe
kann einer mir helfen
Danke schon mal im voraus! and have a nice day :-)
 
Und wie sollen wir dir jetzt helfen ?

Also du könntest versuchen Zeile 40 mit 43 zu tauschen !?
Nee spaß beiseite konkrete Frage, Code posten oder wie auch immer
 
naja ich weiss nicht ob ihr damit was anfangen kann
aber bitte hier ist mein code:

#include<sys/socket.h>
#include<netinet/in.h>

struct sockaddr_in server_service;

int main(void)
{
int i;
int size;
int addr_size=sizeof(server_service);
int mySocket, client;
int nret;
char recvbuf[512];

mySocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(mySocket<0) printf(" Error! \n");

server_service.sin_family=AF_INET;
server_service.sin_port=htons(162);
server_service.sin_addr.s_addr=INADDR_ANY;

nret=bind(mySocket, (struct sockaddr *)&server_service, sizeof(server_service));
if(nret<0) printf(" Errors with bind! \n");

nret=listen(mySocket, 5);
if(nret<0) printf(" Errors with bind sockets! \n");

client=accept(mySocket, NULL, NULL);
if (client>=0) printf(" client is connected! \n\n");

for( ; ; )
{
size=recv(mySocket, recvbuf, sizeof(recvbuf), 0);
if(size == -1) printf(" Error with receiving! \n");
else
{
printf(" %s \n", recvbuf);
break;
}
}
close(mySocket);
return 1;
}

und seit ihr schon etwas schlauer geworden :-)
 
Hallo,

ist das programm alles was du hast ? kannst du mir bitte den kompletten code
schicken ? wenn das alles ist, dann macht das programm gar nichts, ausser dass er eine Verbindung aufbaut und auf den "Client" wartet (accept(...)).

ok, bis dann
m.basit
 
nein natürlich nicht ich hab das nur abgekürzt!

hier ist mein richtiger programm!

#include<stdio.h>
#include<sys/time.h>
#include<unistd.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/select.h>

#define BUFFER_SIZE 1024

int binden(int s);
int lauschen(int s);
int empfangen(int s);

struct sockaddr_in addr;
struct sockaddr_in cli;

int main(void)
{
int mySocket=0;
int c=0;
socklen_t cli_size;

mySocket=socket(AF_INET, SOCK_STREAM, 0);
if(mySocket==-1)
{
perror(" socket() failed \n");
return 1;
}

addr.sin_family=AF_INET;
addr.sin_addr.s_addr=INADDR_ANY;
addr.sin_port=htons(162);

binden(mySocket);
lauschen(mySocket);

cli_size=sizeof(cli);
for( ; ; )
{
c=accept(mySocket, (struct sockaddr*)&cli, &cli_size);
if(c==-1)
{
perror(" accept() failed \n");
close(c);
}
else
{
printf(" Verbindung von %s \n", inet_ntoa(cli.sin_addr));
empfangen(mySocket);
break;
}
}
close(mySocket);
return 1;
}

int binden(int s)
{
if(bind(s, (struct sockaddr*)&addr, sizeof(addr)) ==-1)
{
perror(" bind() failed \n");
return 2;
}
}

int lauschen(int s)
{
if(listen(s, 3) ==-1)
{
perror(" listen() failed \n");
return 3;
}
}

int empfangen(int s)
{
char buffer[BUFFER_SIZE];
int bytes=0;

bytes=recv(s, buffer, sizeof(buffer)-1, 0);
if(bytes==-1)
{
perror(" recv() in \"empfangen()\" failed \n");
return -1;
}
buffer[bytes]='\0';
printf(" Server: %s ", buffer);
return 0;
}
 
Zurück