Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android中NSD网络服务发现错误_Java_Android - Fatal编程技术网

Java android中NSD网络服务发现错误

Java android中NSD网络服务发现错误,java,android,Java,Android,我不知道我的应用程序出了什么问题,我遵循了这么多教程,任何提示/帮助/建议都将不胜感激,我是android新手。我在listner的onserviceregistrationfailed函数中遇到错误 包com.example.ravinetworkapplication import java.io.IOException; import java.net.ServerSocket; import java.security.PublicKey; import java.util.ArrayL

我不知道我的应用程序出了什么问题,我遵循了这么多教程,任何提示/帮助/建议都将不胜感激,我是android新手。我在listner的onserviceregistrationfailed函数中遇到错误

包com.example.ravinetworkapplication

import java.io.IOException;
import java.net.ServerSocket;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.List;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.content.Context;
import android.content.pm.ServiceInfo;
import android.net.nsd.NsdManager;
import android.net.nsd.NsdManager.DiscoveryListener;
import android.net.nsd.NsdServiceInfo;
import android.net.nsd.NsdManager.RegistrationListener;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

NsdManager mNsdManager;
Context context;
NsdManager.DiscoveryListener mDiscoveryListner=null;
NsdManager.RegistrationListener mRegistrationListener=null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }

    mNsdManager= (NsdManager) this.getSystemService(Context.NSD_SERVICE);
    final ServerSocket mServerSocket;
    final ArrayList<String> listName = new ArrayList<String>();

    Integer localPort = 0;


    final ListView list = (ListView) findViewById(R.id.listView1);
    listName.add("arunima");
    listName.add("abhishek");

    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this ,     android.R.layout.simple_list_item_1,listName);
    list.setAdapter(adapter);

    try {
         mServerSocket = new ServerSocket(0);
        localPort = mServerSocket.getLocalPort();
        mServerSocket.close();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }



    mRegistrationListener = new  NsdManager.RegistrationListener() {

        @Override
        public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onServiceUnregistered(NsdServiceInfo serviceInfo) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onServiceRegistered(NsdServiceInfo serviceInfo) {
            // TODO Auto-generated method stub
            Log.v("service registrd", "i am on folks");
            Toast.makeText(getApplicationContext(), "Registerd", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
            // TODO Auto-generated method stub

            Log.v("service registration fail", "can not register service kumar ravi");

        }
    };



    mDiscoveryListner = new NsdManager.DiscoveryListener() {

        @Override
        public void onStopDiscoveryFailed(String serviceType, int errorCode) {
            // TODO Auto-generated method stub
            Log.v("cannot stop service", "service discovery failed");
        }

        @Override
        public void onStartDiscoveryFailed(String serviceType, int errorCode) {
            // TODO Auto-generated method stub

            Log.v("can not start", "Can not start discovery kumar ravi "+errorCode);

        }

        @Override
        public void onServiceLost(NsdServiceInfo service) {
            // TODO Auto-generated method stub





        }

        @Override
        public void onServiceFound(NsdServiceInfo service) {
            // TODO Auto-generated method stub
            Log.v("service found", "we found the service");

            if(!service.getServiceType().equals("_myapp.tcp.")){

            }
            else if(service.getServiceName().equals("kumar")){

            }
            else {

                listName.add(service.getServiceName());

                adapter.notifyDataSetChanged();
                list.setAdapter(adapter);
                Toast.makeText(getApplicationContext(), "Finally found the service "+service.getServiceName(), Toast.LENGTH_LONG).show();


            }


        }

        @Override
        public void onDiscoveryStopped(String serviceType) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onDiscoveryStarted(String serviceType) {
            // TODO Auto-generated method stub

            Log.v("Service Discovery Started", "Searching of Service Discovery");

        }
    };


    Log.v("registerd port", localPort.toString());
    final NsdServiceInfo serviceInfo = new NsdServiceInfo();
    serviceInfo.setPort(localPort);
    serviceInfo.setServiceName("kumar");
    serviceInfo.setServiceType("_myapp.tcp.");

    //mNsdManager.registerService(serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);


    Button startBroadcast = (Button) findViewById(R.id.button1);
    Button startListen = (Button) findViewById(R.id.button2);

    startBroadcast.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            mNsdManager.registerService(serviceInfo, NsdManager.PROTOCOL_DNS_SD, mRegistrationListener);
        }
    });

    startListen.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            mNsdManager.discoverServices("_myapp.tcp.", NsdManager.PROTOCOL_DNS_SD, mDiscoveryListner);

        }
    });



}



@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    try{
    mNsdManager.unregisterService(mRegistrationListener);
    mNsdManager.stopServiceDiscovery(mDiscoveryListner);
    Log.v("Stopped", "Scanning stopped"); }
    catch(Exception e){
        Log.v("some error in unregistring service", e.toString());
    }
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);
        return rootView;
    }
}

}
import java.io.IOException;
导入java.net.ServerSocket;
导入java.security.PublicKey;
导入java.util.ArrayList;
导入java.util.List;
导入android.support.v7.app.ActionBarActivity;
导入android.support.v7.app.ActionBar;
导入android.support.v4.app.Fragment;
导入android.content.Context;
导入android.content.pm.ServiceInfo;
导入android.net.nsd.NsdManager;
导入android.net.nsd.NsdManager.DiscoveryListener;
导入android.net.nsd.NsdServiceInfo;
导入android.net.nsd.NsdManager.RegistrationListener;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.Toast;
导入android.os.Build;
公共类MainActivity扩展了ActionBarActivity{
NSD经理mNsdManager;
语境;
NsdManager.discoverylistner mDiscoveryListner=null;
NsdManager.RegistrationListener mrRegistrationListener=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
如果(savedInstanceState==null){
getSupportFragmentManager().beginTransaction()
.add(R.id.container,新的占位符片段()).commit();
}
mNsdManager=(NsdManager)this.getSystemService(Context.NSD_服务);
最终服务器套接字mServerSocket;
final ArrayList listName=新ArrayList();
整数localPort=0;
最终ListView列表=(ListView)findViewById(R.id.listView1);
添加(“阿鲁尼玛”);
添加(“阿披实”);
最终ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,listName);
list.setAdapter(适配器);
试一试{
mServerSocket=新的ServerSocket(0);
localPort=mServerSocket.getLocalPort();
mServerSocket.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
mrRegistrationListener=新的NsdManager.RegistrationListener(){
@凌驾
public void OnInRegistration失败(NsdServiceInfo serviceInfo,int errorCode){
//TODO自动生成的方法存根
}
@凌驾
未注册服务上的公共无效(NsdServiceInfo服务信息){
//TODO自动生成的方法存根
}
@凌驾
已注册服务上的公共无效信息(NsdServiceInfo服务信息){
//TODO自动生成的方法存根
Log.v(“服务注册”,“我在别人身上”);
Toast.makeText(getApplicationContext(),“Registerd”,Toast.LENGTH_LONG.show();
}
@凌驾
public void onRegistration失败(NsdServiceInfo serviceInfo,int errorCode){
//TODO自动生成的方法存根
Log.v(“服务注册失败”,“无法注册服务kumar ravi”);
}
};
mDiscoveryListner=新的NsdManager.discoverylistner(){
@凌驾
public void onStopDiscoveryFailed(字符串服务类型,整数错误代码){
//TODO自动生成的方法存根
Log.v(“无法停止服务”,“服务发现失败”);
}
@凌驾
public void onStartDiscoveryFailed(字符串服务类型,int errorCode){
//TODO自动生成的方法存根
Log.v(“无法启动”,“无法启动发现kumar ravi”+错误代码);
}
@凌驾
ServiceLost上的公共void(NsdServiceInfo服务){
//TODO自动生成的方法存根
}
@凌驾
公共无效OnServiceFund(NsdServiceInfo服务){
//TODO自动生成的方法存根
Log.v(“找到了服务”,“我们找到了服务”);
如果(!service.getServiceType().equals(“\u myapp.tcp”)){
}
else if(service.getServiceName().equals(“kumar”)){
}
否则{
add(service.getServiceName());
adapter.notifyDataSetChanged();
list.setAdapter(适配器);
Toast.makeText(getApplicationContext(),“终于找到了服务”+service.getServiceName(),Toast.LENGTH_LONG).show();
}
}
@凌驾
public void onDiscoveryStopped(字符串服务类型){
//TODO自动生成的方法存根
}
@凌驾
public void onDiscoveryStarted(字符串服务类型){
//TODO自动生成的方法存根
Log.v(“服务发现已启动”,“服务发现搜索”);
}
};
Log.v(“registerd port”,localPort.toString());
最终NsdServiceInfo serviceInfo=新的NsdServiceInfo();
serviceInfo.setPort(localPort);
serviceInfo.setServiceName(“kumar”);
serviceInfo.setServiceType(“_myapp.tcp”);
//注册服务(serviceInfo、NsdManager.PROTOCOL\u DNS\u SD、mRegistrationListener);
按钮开始广播=(按钮)findViewById(R.id.button1);
按钮startListen=(按钮)findViewById(R.id.button2);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
注册服务(serviceInfo、NsdManager.PROTOCOL\u DNS\u SD、mRegistrationListener);
}
});
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//