'java.net.Socket java.net.ServerSocket.accept()' 空对象引用
'java.net.Socket java.net.ServerSocket.accept()' on a null object reference
服务器套接字抛出此错误,应用程序完全崩溃。我在 onCreate() 方法中调用了此线程。当 activity 第一次是 运行 时很好,但完成后返回此 activity 给出以下错误。
'java.net.Socket java.net.ServerSocket.accept()' 空对象引用
private class ClientConnectionThread implements Runnable {
ServerSocket serversocket;
public ClientConnectionThread(){
try{
serversocket = new ServerSocket(5005);
serversocket.setReceiveBufferSize(1024*1024);
Log.v("BoardCastRunning","BoardCast Server Waiting");
}catch (IOException ex){
Log.v("BoardCastError",ex.toString());
}
}
@Override
public void run() {
while(true){
try{
streamClientSocket = serversocket.accept();
Log.v("BoardCast","New Connection");
videoBroadcastSockets.add(streamClientSocket);
runOnUiThread(new Runnable() {
@Override
public void run() {
Utils.shortToast(context,
"Client connected from: "
+ streamClientSocket.getInetAddress().getHostAddress()
+ " " + streamClientSocket.getPort());
}
});
}
catch(IOException ex){
Log.v("BoardCastError",ex.toString());
}
}
}
}
我发现错误并按如下方式编辑我的代码,现在它工作正常且完美。
private class ClientConnectionThread implements Runnable {
ServerSocket serversocket;
public ClientConnectionThread(){
try{
serversocket = new ServerSocket(5005);
serversocket.setReceiveBufferSize(1024*1024);
Log.v("BoardCastRunning","BoardCast Server Waiting");
}catch (IOException ex){
Log.v("BoardCastError",ex.toString());
}
}
@Override
public void run() {
while(true){
try{
if(serversocket!=null){
if(!serversocket.isClosed()){
streamClientSocket = serversocket.accept();
Log.v("BoardCast","New Connection");
if(streamClientSocket!=null){
videoBroadcastSockets.add(streamClientSocket);
runOnUiThread(new Runnable() {
@Override
public void run() {
Utils.shortToast(context,
"Client connected from: "
+ streamClientSocket.getInetAddress().getHostAddress()
+ " " + streamClientSocket.getPort());
}
});
}
}
}
}
catch(IOException ex){
Log.v("BoardCastError",ex.toString());
}
}
}
}
服务器套接字抛出此错误,应用程序完全崩溃。我在 onCreate() 方法中调用了此线程。当 activity 第一次是 运行 时很好,但完成后返回此 activity 给出以下错误。
'java.net.Socket java.net.ServerSocket.accept()' 空对象引用
private class ClientConnectionThread implements Runnable {
ServerSocket serversocket;
public ClientConnectionThread(){
try{
serversocket = new ServerSocket(5005);
serversocket.setReceiveBufferSize(1024*1024);
Log.v("BoardCastRunning","BoardCast Server Waiting");
}catch (IOException ex){
Log.v("BoardCastError",ex.toString());
}
}
@Override
public void run() {
while(true){
try{
streamClientSocket = serversocket.accept();
Log.v("BoardCast","New Connection");
videoBroadcastSockets.add(streamClientSocket);
runOnUiThread(new Runnable() {
@Override
public void run() {
Utils.shortToast(context,
"Client connected from: "
+ streamClientSocket.getInetAddress().getHostAddress()
+ " " + streamClientSocket.getPort());
}
});
}
catch(IOException ex){
Log.v("BoardCastError",ex.toString());
}
}
}
}
我发现错误并按如下方式编辑我的代码,现在它工作正常且完美。
private class ClientConnectionThread implements Runnable {
ServerSocket serversocket;
public ClientConnectionThread(){
try{
serversocket = new ServerSocket(5005);
serversocket.setReceiveBufferSize(1024*1024);
Log.v("BoardCastRunning","BoardCast Server Waiting");
}catch (IOException ex){
Log.v("BoardCastError",ex.toString());
}
}
@Override
public void run() {
while(true){
try{
if(serversocket!=null){
if(!serversocket.isClosed()){
streamClientSocket = serversocket.accept();
Log.v("BoardCast","New Connection");
if(streamClientSocket!=null){
videoBroadcastSockets.add(streamClientSocket);
runOnUiThread(new Runnable() {
@Override
public void run() {
Utils.shortToast(context,
"Client connected from: "
+ streamClientSocket.getInetAddress().getHostAddress()
+ " " + streamClientSocket.getPort());
}
});
}
}
}
}
catch(IOException ex){
Log.v("BoardCastError",ex.toString());
}
}
}
}