0
두 개의 안드로이드 장치간에 데이터를주고받는 프로그램을 만들고 있습니다. 먼저 내가이 패킷을 수신 할 서버 스레드에서 데이터안드로이드 - DatagramPacket을 보낼 수 없습니다
public void run() {
try {
//Create the datagram packet
byte[] buffer = message.getBytes();
InetAddress addr = InetAddress.getByName(address);
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, addr, 5555);
//Create Datagram Socket
DatagramSocket socket = new DatagramSocket();
socket.setBroadcast(broadcast);
// send the packet
socket.send(packet); // i think that the problem was here
} catch (Exception e) {
e.printStackTrace();
Log.i("CTHREAD", "erreur");
}
를 보내 클라이언트 스레드를 생성, 그래서 10 패킷을 수신하기 위해 DatagramSocket를 열었다. 내가 메시지를 보낼 때 프로그램이 ClientThread을 실행할 수 있도록
public void run() {
try {
serverIP = getLocalIpAddress();
Log.v("addr", serverIP);
serverSocket = new ServerSocket(5001);
Log.v("socket", "created");
while(socketOk) { //boucle infini
Socket client = serverSocket.accept();
// Log.v("client", "received");
try {
DatagramSocket socket = new DatagramSocket(5556);
byte[] buf = new byte[1024]; //buffer
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
byte[] result = new byte[packet.getLength()];
System.arraycopy(packet.getData(), 0, result, 0, packet.getLength());
String msg = new String(result);
updateGui(msg, packet.getAddress());
} catch (Exception e) {
socketOk =false;
Log.v("ServerThread", "SocketOk =false");
}
}
}
catch (Exception e) {}
}
}
, 내가 어떤 경고를 얻을 수 있습니다.
at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:506)
at libcore.io.IoBridge.sendto(IoBridge.java:475)
at java.net.DatagramSocket.send(DatagramSocket.java:284)
Caused by: libcore.io.ErrnoException: sendto failed: EACCES (Permission denied)
Manifest.xml :
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
그럼, 얼마나 문제가 ??? 어떻게 해결할 수 있니?