server v C
Hacx
hacx na seznam.cz
Čtvrtek Duben 11 18:31:29 CEST 2002
Dobrý den.
v C dělám teprve pár týdnů (měsíc) a chci
udělat server,který čeká na určitém portu a
po připojení na něho,by měl umět
odesílat a přijmat pakety.Vzdycky kdyz
se na muj server pripojim (pomocí telnetu v
2. kosoli) tak me to odpoji a a v 1. konsoli
kde je server spusteny to napise chybu: Bad Adress
Rekne te mi prosím na co jsem zapomněl nebo,kde
je chyba:
/************************/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#define LOCALPORT 9000
#define BACKLOG 1
main()
{
struct sockaddr_in myAddr;
struct sockaddr_in cliAddr;
int sock,nsock,un,who;
char *data,buff[5000];
myAddr.sin_family=AF_INET;
myAddr.sin_addr.s_addr=htonl(INADDR_ANY);
myAddr.sin_port=htons(LOCALPORT);
memset(&(myAddr.sin_zero),'\0',8);
cliAddr.sin_addr.s_addr=htonl(gethostbyname("localhost.localdomain"));
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock<0)
{
printf("Cannot create socket\n");
exit(0);
}
un=bind(sock,(struct sockaddr *)&myAddr,sizeof(myAddr));
if(un<0)
{
printf("Cannot open port\n");
exit(0);
}
un=listen(sock,BACKLOG);
if(un == -1)
{
perror("listen");
}
while(1)
{
if((nsock=accept(sock,(struct sockaddr *)&cliAddr,sizeof(struct
sockaddr_in))) == -1 )
{
perror("accept");
continue;
}
}
printf("Accepted connection from:%s\n",inet_ntoa(cliAddr.sin_addr));
while(buff != 0)
{
scanf("%s",&data);
if( send(nsock,&data,sizeof(data),0))
{
printf("Send...\n");
}
recv(nsock,&buff,sizeof(buff),0);
printf("%s",&buff);
}
close(sock);
}
/************************/
Díky
Hacx
Další informace o konferenci Linux