Anthony Wang
unread,Nov 22, 2010, 5:21:31 AM11/22/10Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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.