socket cliente y servidor c++ / linux

Iniciado por d00ze13, 28 Abril 2011, 18:38 PM

0 Miembros y 1 Visitante están viendo este tema.

d00ze13

Necesitaba ayuda a ver si alguien que supiera sobre sockets en c me pudiera hechar una mano.
Tengo un cliente y  un servidor hecho, me compilan bien pero luego no me establece la conexion.
SERVER
Código (cpp) [Seleccionar]

#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <iostream>
using namespace std;
int main(){
       
int sockfd, new_sock;
sockfd=socket(AF_INET,SOCK_STREAM,0);
       struct sockaddr_in sin={AF_INET,htons(900),INADDR_ANY};
       char text;

       bind(sockfd,(struct sockaddr *) &sin,sizeof(sin));
       listen(sockfd,5);
       new_sock=accept(sockfd,NULL,NULL);
       close(sockfd);

       while(read(new_sock,&text,1))
write(1,&text,1);
       cout<<endl;
}

CLIENTE
Código (cpp) [Seleccionar]

#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
void uso(char *prog){
       
cout<<"Uso:\n";
       cout<<"\t"<<prog<<" <ip dest> [port dest] [msg]\n\n";
       exit(0);
}
int main(int argc,char **argv){
     
int sockfd;
sockfd=socket(AF_INET,SOCK_STREAM,0);
       struct sockaddr_in sin={AF_INET,htons(900),INADDR_ANY};
       char *texto;
texto=new char[50];

       if(argc<2) uso(argv[0]);
       if(argc>2) sin.sin_port=htons(atoi(argv[2]));
       if(argc>3) strcpy(texto,argv[3]);
       sin.sin_addr.s_addr=inet_addr(argv[1]);

       if (connect(sockfd,(struct sockaddr *) &sin,sizeof(sin))==-1){
               perror("connect()");
               exit(0);
       }

       send(sockfd,texto,strlen(texto),0);
cout<<texto<<endl;

       close(sockfd);
       cout<<endl;
}


Lo siento por el tocho!!
1 saludo ; )