UDP socket error in Android emulator

567 views
Skip to first unread message

Anthony Wang

unread,
Nov 22, 2010, 5:21:31 AM11/22/10
to android-platform, Anthony Wang
Dear Sirs.
When I tried to run this progarm I got exception error in creating
sockets (both server and client): (in Windows XP professional, target
Android SDK 2.2)
11-21 14:31:45.773: DEBUG/UDP(217): S: Connecting...
11-21 14:31:46.613: DEBUG/UDP(217): C: Connecting...
11-21 14:31:47.323: ERROR/UDP(217): S: Error
11-21 14:31:47.323: ERROR/UDP(217): java.net.SocketException:
Permission denied (maybe missing INTERNET permission)
11-21 14:31:47.323: ERROR/UDP(217): at
org.apache.harmony.luni.platform.OSNetworkSystem.createDatagramSocketImpl(Native
Method)
11-21 14:31:47.323: ERROR/UDP(217): at
org.apache.harmony.luni.platform.OSNetworkSystem.createDatagramSocket(OSNetworkSystem.java:
90)
11-21 14:31:47.323: ERROR/UDP(217): at
org.apache.harmony.luni.net.PlainDatagramSocketImpl.create(PlainDatagramSocketImpl.java:
148)
11-21 14:31:47.323: ERROR/UDP(217): at
java.net.DatagramSocket.createSocket(DatagramSocket.java:209)
11-21 14:31:47.323: ERROR/UDP(217): at
java.net.DatagramSocket.<init>(DatagramSocket.java:107)
11-21 14:31:47.323: ERROR/UDP(217): at
com.net.udpconnection.Server.run(Server.java:24)
11-21 14:31:47.323: ERROR/UDP(217): at
java.lang.Thread.run(Thread.java:1060)
11-21 14:31:47.563: ERROR/UDP(217): C: Error
11-21 14:31:47.563: ERROR/UDP(217): java.net.SocketException:
Permission denied (maybe missing INTERNET permission)
11-21 14:31:47.563: ERROR/UDP(217): at
org.apache.harmony.luni.platform.OSNetworkSystem.createDatagramSocketImpl(Native
Method)
11-21 14:31:47.563: ERROR/UDP(217): at
org.apache.harmony.luni.platform.OSNetworkSystem.createDatagramSocket(OSNetworkSystem.java:
90)
11-21 14:31:47.563: ERROR/UDP(217): at
org.apache.harmony.luni.net.PlainDatagramSocketImpl.create(PlainDatagramSocketImpl.java:
148)
11-21 14:31:47.563: ERROR/UDP(217): at
java.net.DatagramSocket.createSocket(DatagramSocket.java:209)
11-21 14:31:47.563: ERROR/UDP(217): at
java.net.DatagramSocket.<init>(DatagramSocket.java:88)
11-21 14:31:47.563: ERROR/UDP(217): at
java.net.DatagramSocket.<init>(DatagramSocket.java:71)
11-21 14:31:47.563: ERROR/UDP(217): at
com.net.udpconnection.Client.run(Client.java:21)
11-21 14:31:47.563: ERROR/UDP(217): at
java.lang.Thread.run(Thread.java:1060)

How to correct it?
udpconnection.java
==============

1. //Class: UDPConnection
2. package org.anddev.android.udpconnection;
3.
4. import android.app.Activity;
5. import android.os.Bundle;
6.
7. public class UDPConnection extends Activity {
8. /** Called when the activity is first created. */
9. @Override
10. public void onCreate(Bundle savedInstanceState) {
11. super.onCreate(savedInstanceState);
12. setContentView(R.layout.main);
13.
14. new Thread(new Server()).start();
15. /* GIve the Server some time for startup */
16. try {
17. Thread.sleep(500);
18. } catch (InterruptedException e) { }
19.
20. // Kickoff the Client
21. new Thread(new Client()).start();
22. }
23. }

client.java
=======

1. //Class: Client
2. package org.anddev.android.udpconnection;
3.
4. import java.net.DatagramPacket;
5. import java.net.DatagramSocket;
6. import java.net.InetAddress;
7.
8. import android.util.Log;
9.
10. public class Client implements Runnable {
11.
12. @Override
13. public void run() {
14. // TODO Auto-generated method stub
15. try {
16. // Retrieve the ServerName
17. InetAddress serverAddr =
InetAddress.getByName(Server.SERVERIP);
18.
19. Log.d("UDP", "C: Connecting...");
20. /* Create new UDP-Socket */
21. DatagramSocket socket = new DatagramSocket();
22.
23. /* Prepare some data to be sent. */
24. byte[] buf = ("Hello from Client").getBytes();
25.
26. /* Create UDP-packet with
27. * data & destination(url+port) */
28. DatagramPacket packet = new DatagramPacket(buf,
buf.length, serverAddr, Server.SERVERPORT);
29. Log.d("UDP", "C: Sending: '" + new String(buf) +
"'");
30.
31. /* Send out the packet */
32. socket.send(packet);
33. Log.d("UDP", "C: Sent.");
34. Log.d("UDP", "C: Done.");
35.
36. socket.receive(packet);
37. Log.d("UDP", "C: Received: '" + new
String(packet.getData()) + "'");
38.
39. } catch (Exception e) {
40. Log.e("UDP", "C: Error", e);
41. }
42. }
43.
44. }
45.

server.java
========

1. //Class: Server
2. package org.anddev.android.udpconnection;
3.
4. import java.net.DatagramPacket;
5. import java.net.DatagramSocket;
6. import java.net.InetAddress;
7.
8. import android.util.Log;
9.
10. public class Server implements Runnable {
11.
12. public static final String SERVERIP = "127.0.0.1"; //
'Within' the emulator!
13. public static final int SERVERPORT = 4444;
14.
15. @Override
16. public void run() {
17. // TODO Auto-generated method stub
18. try {
19. /* Retrieve the ServerName */
20. InetAddress serverAddr =
InetAddress.getByName(SERVERIP);
21.
22. Log.d("UDP", "S: Connecting...");
23. /* Create new UDP-Socket */
24. DatagramSocket socket = new
DatagramSocket(SERVERPORT, serverAddr);
25.
26. /* By magic we know, how much data will be waiting
for us */
27. byte[] buf = new byte[17];
28. /* Prepare a UDP-Packet that can
29. * contain the data we want to receive */
30. DatagramPacket packet = new DatagramPacket(buf,
buf.length);
31. Log.d("UDP", "S: Receiving...");
32.
33. /* Receive the UDP-Packet */
34. socket.receive(packet);
35.
36. Log.d("UDP", "S: Received: '" + new
String(packet.getData()) + "'");
37. Log.d("UDP", "S: Done.");
38.
39. InetAddress clientAddr = packet.getAddress();
40. int clientPort = packet.getPort();
41. String s = "Thanks";
42. buf = s.getBytes();
43. packet = new DatagramPacket(buf, buf.length,
clientAddr, clientPort);
44.
45. Log.d("UDP", "S: Sending: '" + new String(buf) +
"'");
46. socket.send(packet);
47.
48. } catch (Exception e) {
49. Log.e("UDP", "S: Error", e);
50. }
51. }
52.
53. }
54.

Chris Stratton

unread,
Nov 22, 2010, 1:46:34 PM11/22/10
to android-platform
On Nov 22, 5:21 am, Anthony Wang <awang3...@gmail.com> wrote:
> Dear Sirs.
> When I tried to run this progarm I got exception error in creating
> sockets (both server and client):

Error message is pretty suggestive:

Anthony Wang

unread,
Nov 29, 2010, 11:32:50 AM11/29/10
to android-...@googlegroups.com
In the manifest.xml file, add this sentence
<uses-permission android:name="android.permission.INTERNET"></uses-permission>


2010/11/23 Chris Stratton <cs0...@gmail.com>
--
You received this message because you are subscribed to the Google Groups "android-platform" group.
To post to this group, send email to android-...@googlegroups.com.
To unsubscribe from this group, send email to android-platfo...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/android-platform?hl=en.


Reply all
Reply to author
Forward
0 new messages