相关疑难解决方法(0)

在单独的线程中创建ServerSocket?

ServerSocket在我的应用程序中使用a时遇到问题.

我正在ServerSocket我的应用程序的构造函数中创建它.套接字的构造函数调用该accept()方法以等待客户端连接.

问题是该accept()方法冻结了我的整个应用程序,直到客户端连接.所以我想问一下是否有另一种方法可以ServerSocket在一个单独的线程中创建整体,在我的主应用程序旁边调用ServerSocket它的构造函数和它的accept()方法?

编辑:

感谢Olivier的建议,将.accept放入runnable并创建一个线程池来处理客户端连接.

那是我现在的代码:

  public void start(){

      final ExecutorService clientProcessingPool = Executors.newFixedThreadPool(10);

      Runnable serverTask = new Runnable() {
          @Override
          public void run() {

              try {
                  serverSocket = new ServerSocket(port);

                  while (true) {
                      Socket clientSocket = serverSocket.accept();
                      objectout = new ObjectOutputStream(clientSocket.getOutputStream());
                      clientProcessingPool.submit(new ClientTask(clientSocket,objectout)); 
                  }
              } catch (IOException e) {
                  System.err.println("Accept failed.");
              }

          }
      };
Run Code Online (Sandbox Code Playgroud)

万事都好!谢谢!

java multithreading serversocket

21
推荐指数
1
解决办法
3万
查看次数

如何在Android中播放视频文件?

我将视频MP4放到了我的域名空间.我有它的公共URL,现在我想在我的Android应用程序中播放它; 但不知道我怎么能这样做.我使用了以下无效的代码.轨道控制器正在移动,但我在屏幕上看不到任何视频.

public class MPlayer extends Activity{
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.playvideo);
    VideoView videoView = new VideoView(MPlayer.this);
    videoView.setMediaController(new MediaController(this));
    videoView.setVideoURI(Uri.parse("http://www.semanticdevlab.com/abc.mp4"));
    videoView.requestFocus();
    videoView.start();
    LinearLayout l = (LinearLayout)findViewById(R.id.mplayer);
    l.addView(videoView);
}
}
Run Code Online (Sandbox Code Playgroud)

video android playback

14
推荐指数
3
解决办法
7万
查看次数

标签 统计

android ×1

java ×1

multithreading ×1

playback ×1

serversocket ×1

video ×1