Mam taki oto program:
#include <unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/wait.h>
#include <iostream>
#include <arpa/inet.h>
#define MYPORT 9999
#define BACKLOG 10
using namespace std;
int main( void ) {
int sockfd, new_fd;
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
socklen_t sin_size;
sockfd = socket( AF_INET, SOCK_STREAM, 0 );
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons( MYPORT );
my_addr.sin_addr.s_addr = INADDR_ANY;
memset( &( my_addr.sin_zero ), '\0', 8 );
while(1) {
bind( sockfd,( struct sockaddr * ) & my_addr, sizeof( struct sockaddr ));
listen( sockfd, BACKLOG );
sin_size = sizeof( struct sockaddr_in );
new_fd = accept( sockfd,( struct sockaddr * ) & their_addr, & sin_size );
cout<<"Connected with "<<inet_ntoa(their_addr.sin_addr)<<"!"<<endl;
char msg[256] = {0};
while(1) {
if( (recv(new_fd, msg, 256, 0) ) > 0 ) {
cout<<msg<<endl;
break;
}
}
close(new_fd);
}
return 0;
}
Gdy go odpalę, a następnie wpiszę w oddzielnej konsoli:
telnet 192.168.1.4 9999
Program zasygnalizuje połączenie oraz wyświetli wiadomość jeśli jakąś w konsoli z odpalonym telenetm napiszę.
Wszystko działa dobrze gdy program oraz telnet są włączane na jednym komputerze, ale gdy program odpalam na jednym, a telnet na drugim komputerze znajdującym się w tej samej sieci wifi, to połączenie się nie nawiązuje. Czy da się w ogóle połączyć w ten sposób (tj. program włączony na jednym komputerze, a telnet na drugim, gdzie oba znajdują się w tej samej sieci wifi) ? Jak to zrobić jeśli się da ?