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
#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
#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 ; )