我现在做了一个视频直播,PC 有个webbroadcast,把摄像头的图像直播给Android 手机。
手机已经能够接收到直播的视频了。
现在我想加一个按钮,给PC传命令,也就是写一个char 过去。单独运行也OK。
但是两个放到一起,就是在接受视频的同时,一按下按钮,执行到writeChar就force close。
我视频用的是端口 9889,发送字节是端口2500。
是不是不能和同一个PC的IP的不同端口通讯啊。

解决方案 »

  1.   

    上代码:
    这个是发单字节命令的给PC的建立连接代码:
    public void run(){
    // Check if the Wi-Fi function is turned on
    ConnectivityManager cm = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (!cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting()){ return;
    }

    server = new Socket();
    InetSocketAddress isa = null;

    try {
    isa = new InetSocketAddress(InetAddress.getByName(host),port);
    } catch (UnknownHostException e1) {

    return;
    }
    try {
    server.connect(isa, 20000);  // 20 sec timeout
    //server = new Socket(InetAddress.getByName(hostIP),PORT);
    os = server.getOutputStream();
    is = server.getInputStream();
    } catch (IOException e) {

    return;
    }
    }下面是接受视频连接的代码:
    Socket socket = null;
    try{
    socket = new Socket();
    socket.bind(null);
    socket.setSoTimeout(SOCKET_TIMEOUT);
    socket.connect(new InetSocketAddress(address, port), SOCKET_TIMEOUT); //obtain the bitmap
    InputStream in = socket.getInputStream();
    Bitmap bitmap = BitmapFactory.decodeStream(in);
      

  2.   

    我在PC那里建立的server返回的是socket建立成功。但是就是不能writeChar