2010-08-28 16 views
11

Bir Android cihazında ServerSocket kullanarak bir bağlantı noktasında dinlemeyi deniyorum. Aynı ağdaki bir bilgisayarı kullanarak bu bağlantı noktasına WiFi üzerinden bağlanmak istiyorum. Ben, 0.0.0.0, WiFi LAN IP localhost'a için bağlayıcı sayısız yollar denedimAndroid'de ServerSocket kullanamazsınız

Proto Recv-Q Send-Q Local Address   Foreign Address   State 
tcp  0  0 (null):4040    (null):*    LISTEN 

: Bir bağlantı noktasına bağlanması sırasında

ben netstat kontrol ederken ancak diyor, hiçbir istisna olsun SocketInetAddress ve InetAddress.getByName ile cihazın adresi. Hiçbir şey işe yaramıyor.

Who has [phone's LAN address]? Tell [computer LAN address]. 

Bu:

aynı WiFi bir bilgisayardan bağlantı noktasına bağlanmayı deneyin

Ben Wireshark görebileceğiniz tüm bir ARP isteği, (ben hem netcat çalıştı ve Java en Socket.connect() ettik) istek zaman aşımına kadar kendini tekrarlayın.

Bilgisayarda ServerSocket'ı ayarlayarak ve telefondan bu bağlantı noktasına bağlayarak, çok iyi çalışan tersini denedim.

Test telefonum özel bir ROM'lu bir Samsung Spica i5700.

Herhangi bir fikrin var mı?

Düzenleme: kod bu kadar basittir:

ServerSocket server = new ServerSocket(); 
server.setReuseAddr(true); 
server.setTimeout(0); 
server.bind(new InetSocketAddress(4040)); 

Socket client = null; 
while((client = server.accept()) == null); 
// Connected 
enter code here 
enter code here 
+0

bazı kod gösterebilir misin? Bildirim dosyasında doğru izni mi ayarlıyorsunuz? – Flo

+0

Soruyu bir kodla güncelledim. Evet, bildirimde INTERNET'e izin verdim. – shuwo

+0

'ServerSocket.accept()' null döndüremiyor. – EJP

cevap

0

Ben

kullanarak bu çalışma almak başardı

Burada addr = InetAdres telefonunuzun. Aksi halde, yalnızca localhost'a bağlanır (127.0.0.1). Ayrıca, 8080 nolu

+0

Telefonunuzun InetAddress'ini nasıl buluyorsunuz? – JPM

+0

Eğer ana makine adı argümanını atlarsanız veya 'null' değerini geçerseniz, '0.0.0.0' a bağlanmalıdır. – EJP

İlgili konular