mam taki problem z klientem... na zajęciach wysyłał dane na inny port niż mu podałem a z moim serwerem nie chce się połączyć...
w poradniku było tylko napisane "zatelnetuj się na niego telnet hostname 9034"
1.Nie mam pojęcia co to znaczy...
2.z kąd mam wziąć to hostname(jak)...
Reszta chyba działa ale mam problemy z łączeniem się(tutorial nie pomógł).
Kolega łączył się z serwerem i podawał ip i port... jak to może się odnosić do klienta? czy to hostname ma być ip czy czymś innym?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <iostream>
#include <winsock2.h>
#include <windows.h>
#include <iostream>
#include <cstdlib>
#define MYPORT 9034
using namespace std;
int main(void)
{
int sockfd;
struct sockaddr_in their_addr; // informacja o adresie osoby łączącej się
struct hostent * he;
int numbytes;
string hostname="localhost",port="9034";
if(( he = gethostbyname(hostname.c_str()) ) == NULL ) { // pobierz informacje o hoście
perror( "gethostbyname" );
exit( 1 );
}
if(( sockfd = socket( AF_INET, SOCK_DGRAM, 0 ) ) == - 1 ) {
perror( "socket" );
exit( 1 );
}
their_addr.sin_family = AF_INET; // host byte order
their_addr.sin_port = htons( MYPORT ); // short, network byte order
their_addr.sin_addr = *(( struct in_addr * ) he->h_addr );
memset( &( their_addr.sin_zero ), '\0', 8 ); // wyzeruj resztę struktury
if(( numbytes = sendto( sockfd,port.c_str(), strlen(port.c_str() ), 0,
( struct sockaddr * ) & their_addr, sizeof( struct sockaddr ) ) ) == - 1 ) {
perror( "sendto" );
exit( 1 );
}
printf( "sent %d bytes to %s\n", numbytes,
inet_ntoa( their_addr.sin_addr ) );
close( sockfd );
system("pause");
return 0;
}