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