server = new ServerSocket(PORT);
私のアプリケーションでNetworkOnMainThreadExceptionを呼び出さないので、別のスレッドで実行するようにコードを編集する必要があります。
socket= new Socket(ADDRESS,PORT);
NetworkOnMainThreadExceptionを適切に呼び出します。私は何かを見逃しましたか、それとも修正する必要があるエラーですか?
server = new ServerSocket(PORT);
私のアプリケーションでNetworkOnMainThreadExceptionを呼び出さないので、別のスレッドで実行するようにコードを編集する必要があります。
socket= new Socket(ADDRESS,PORT);
NetworkOnMainThreadExceptionを適切に呼び出します。私は何かを見逃しましたか、それとも修正する必要があるエラーですか?
なぜそれが必要ですか?new ServerSocket(...)
単なるローカル操作です。実際のネットワークアクティビティは含まれませんが、含まnew Socket(...)
れ、最大1分ほどブロックされる可能性があります。
new Socket(ADDRESS、PORT);を呼び出すとき。
private Socket(SocketAddress address, SocketAddress localAddr,
413 boolean stream) throws IOException {
414 setImpl();
415
416 // backward compatibility
417 if (address == null)
418 throw new NullPointerException();
419
420 try {
421 createImpl(stream);
422 if (localAddr != null)
423 bind(localAddr);
424 if (address != null)
425 connect(address);
426 } catch (IOException e) {
427 close();
428 throw e;
429 }
430 }
ストリームを作成します。一方server = new ServerSocket(PORT);
public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException {
230 setImpl();
231 if (port < 0 || port > 0xFFFF)
232 throw new IllegalArgumentException(
233 "Port value out of range: " + port);
234 if (backlog < 1)
235 backlog = 50;
236 try {
237 bind(new InetSocketAddress(bindAddr, port), backlog);
238 } catch(SecurityException e) {
239 close();
240 throw e;
241 } catch(IOException e) {
242 close();
243 throw e;
244 }
245 }
connect();
これらの方法のいずれにもネットワーク操作が含まれないため、取得できないことに注意してください。NetworkOnMainThreadException