[SOLVED] sockety c++ a domowy lan

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
sentrio
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 05 gru 2009, 17:28
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

[SOLVED] sockety c++ a domowy lan

Post autor: sentrio »

witam. Bawię się właśnie socketami i mój problem polega na tym że prosty program serwera i klienta działa ale tylko na tym samym komputerze. Mam dwa laptopy ubuntu 9.10 i jeden podłączony przez WiFi a drugi bezpośrednio kablem ethernet do routera. Pytanie : dlaczego nie ma połączenia między programami klienta i serwera na dwóch kompach.

zamieszczam kody serwera i klienta :

Kod: Zaznacz cały

#include <iostream>
#include <sys/socket.h>
#include <string.h>
#include <stdio.h>
#include <arpa/inet.h>
using namespace std;
int main()
{
	int gniazdo,gniazdo2;
	struct sockaddr_in adresy, nadawca;
	socklen_t len=sizeof(struct sockaddr_in);
	char bufor[1024];
	
	bzero(bufor,sizeof bufor);
	
	if ((gniazdo=socket(AF_INET,SOCK_STREAM,0))<0)
	perror("socket");
	
	bzero(&adresy,sizeof adresy);
	cout<<"na ktorym porcie mam nasluchiwac : ";
	int port;
	cin>>port;
	adresy.sin_family=AF_INET;
	adresy.sin_port=htons(port);
	adresy.sin_addr.s_addr=htonl(INADDR_ANY);
	
	bind(gniazdo , (struct sockaddr *) &adresy , sizeof(adresy));
	
	if ((listen(gniazdo,10)) < 0) perror("listen"); else cout<<"czekam na polaczenie"<<endl;
	
	
	while ((gniazdo2 = accept(gniazdo,(struct sockaddr*) &nadawca , &len)) > 0 ) 
   	{
        	memset(bufor, 0, 1024);
       		recv(gniazdo2, bufor, sizeof(bufor), 0);
        	cout<<"Wiadomosc od "<<inet_ntoa(nadawca.sin_addr)<<"\t"<<bufor<<endl;
        	close(gniazdo2);
   	} 
}

Kod: Zaznacz cały

#include <iostream>
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
using namespace std;
int main()
{
	int sockfd,connfd,wyslanie;
	struct sockaddr_in adresy;
	
	if ((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0)
	perror("socket");
	
	cout<<"podaj adres IP serwera : ";
	string adres;
	cin>>adres;
	cout<<"podaj numer portu : ";
	int port;
	cin>>port;
	cout<<"podaj wiadomosc : ";
	char bufor[1024];
	//fflush(stdout);
	fgetc(stdin);
    	fgets(bufor, 1024, stdin);
	
	bzero(&adresy,sizeof(adresy));
	
	adresy.sin_family=AF_INET;
	adresy.sin_port=htons(port);
	adresy.sin_addr.s_addr=inet_addr(adres.c_str());
	
	if ((connfd=connect(sockfd,(struct sockaddr *)&adresy,sizeof adresy))<0)
	perror("connect"); else cout<<"polaczenie nawiazane"<<endl;
	
	if ((wyslanie=write(sockfd,bufor,strlen(bufor)))<0)
	perror("write"); else cout<<"wiadomosc wyslana"<<endl;
	
	close(sockfd); 
}
od siebie dodam ,że kompy mają po przydzielane IP od routera

przeskanowałem lan nmapem z kompa z ethernetem i nie mógł się połączyć z tym z WiFi

ethernet 192.168.1.3
WiFi 192.168.1.4

Kod: Zaznacz cały

lucjan@lucjan-laptop2:~/Pulpit$ nmap -sP 192.168.1.*

wynik tego z ethernetem
Starting Nmap 5.00 ( http://nmap.org ) at 2011-01-15 19:30 CET
Host 192.168.1.1 is up (0.0017s latency).
Host 192.168.1.3 is up (0.00021s latency).
Nmap done: 256 IP addresses (2 hosts up) scanned in 11.06 seconds
a ten z WiFi znajduje drugiego kompa bez problemu

ten z ethernetem mam od 3 dni i dzisiaj zainstalowałem na nim ubuntu
wojtusp7
Piegowaty Guziec
Piegowaty Guziec
Posty: 11
Rejestracja: 14 gru 2010, 21:30
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: sockety c++ a domowy lan

Post autor: wojtusp7 »

Może firewall blokuje połączenie ?
sentrio
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 05 gru 2009, 17:28
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: sockety c++ a domowy lan

Post autor: sentrio »

sprawdziłem - firewall jest od początku wyłączony
sorry sprawdziłem na drugim kompie - i tam był włączony firewall
dzięki za pomoc wojtusp7
temat do zamknięcia
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 6 gości