UDP 소켓을 통해 객체 (ClientModel)를 보내려고합니다. 간단한 문자열을 보내려고하면 소켓 부분이 잘 작동합니다. 예외가 발생했습니다. 오류는 어디에서 발생합니까? 클라이언트는 "클라이언트 : 실패"라고 말합니다. 문제가 송신 프로세스이기 때문에 여기에 코드는 클라이언트 측 미안, 나는이 물건 :안드로이드 UDP 소켓을 통해 객체 보내기
덕분에 여기
public class ClientActivity extends Activity {
public static final int SERVERPORT = 5050;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.client);
try {
InetAddress serverAddr = getBroadcastAddress();
DatagramSocket socket = new DatagramSocket();
//byte[] buf = "whatsup bitches".getBytes();
ClientModel sendingMessage = new ClientModel();
sendingMessage.data = 999;
sendingMessage.name = "sample";
System.out.println(sendingMessage);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(sendingMessage);
byte[] buf = baos.toByteArray();
DatagramPacket packet = new DatagramPacket(buf, buf.length,
serverAddr, SERVERPORT);
socket.send(packet);
Log.d("UDP", "Client: Packet sent to server on address: " + serverAddr);
}
catch (Exception e) {
Log.d("UDP", "Client: Fail");
}
}
private InetAddress getBroadcastAddress() throws IOException {
WifiManager myWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
DhcpInfo myDhcpInfo = myWifiManager.getDhcpInfo();
if (myDhcpInfo == null) {
System.out.println("Could not get broadcast address");
return null;
}
int broadcast = (myDhcpInfo.ipAddress & myDhcpInfo.netmask)
| ~myDhcpInfo.netmask;
byte[] quads = new byte[4];
for (int k = 0; k < 4; k++)
quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
return InetAddress.getByAddress(quads);
}
class ClientModel {
public int data;
public String name;
}
}
수신에 대해 생각 할 수있는 것보다, 순간, 로그 것입니다 :
11-29 17:10:09.933: I/System.out(5700): [email protected]
11-29 17:10:09.964: W/System.err(5700): java.io.NotSerializableException: com.example.ClientActivity$ClientModel
11-29 17:10:09.964: W/System.err(5700): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1535)
11-29 17:10:09.964: W/System.err(5700): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
11-29 17:10:09.964: W/System.err(5700): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
11-29 17:10:09.964: W/System.err(5700): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
11-29 17:10:09.964: W/System.err(5700): at com.example.ClientActivity.onCreate(ClientActivity.java:39)
11-29 17:10:09.964: W/System.err(5700): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-29 17:10:09.964: W/System.err(5700): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
11-29 17:10:09.964: W/System.err(5700): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
11-29 17:10:09.964: W/System.err(5700): at android.app.ActivityThread.access$1500(ActivityThread.java:123)
11-29 17:10:09.964: W/System.err(5700): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
11-29 17:10:09.964: W/System.err(5700): at android.os.Handler.dispatchMessage(Handler.java:99)
11-29 17:10:09.964: W/System.err(5700): at android.os.Looper.loop(Looper.java:130)
11-29 17:10:09.964: W/System.err(5700): at android.app.ActivityThread.main(ActivityThread.java:3835)
11-29 17:10:09.964: W/System.err(5700): at java.lang.reflect.Method.invokeNative(Native Method)
11-29 17:10:09.964: W/System.err(5700): at java.lang.reflect.Method.invoke(Method.java:507)
11-29 17:10:09.964: W/System.err(5700): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
11-29 17:10:09.964: W/System.err(5700): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
11-29 17:10:09.964: W/System.err(5700): at dalvik.system.NativeStart.main(Native Method)
11-29 17:10:09.964: D/UDP(5700): Client: Fail
, 당신은 더 많은 정보를 얻을 것 ... (힌트 :. 당신은 거의 * * 당신이 잡을 예외를 무시해서는 안) –
스택 트레이스를 보여 주실 수 있습니까? 도움이 될 것입니다. – LuigiEdlCarno
나는 그것을하는 법을 모르지만, 나는 며칠에서 안드로이드 프로그래밍을하고있다. – phcaze