熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

java關於多線程的部分操作

2013-11-23 19:50:32  來源: Java高級技術 

  一般服務器端代碼每次收到一個線程一個client就會產生
  /************************ 開始監聽 **************************/
  int port = ;
  ServerSocket server = null;//服務器
  Socket client = null;//客戶端
  try {
  server = new ServerSocket(port);
  } catch (IndirectionException e) {
  Systemoutprintln(正在監聽);
  }
  while(true)
  {
  Systemoutprintln(等待客戶+i);
  i++;
  try {
  client = serveraccept();//開始監聽線程接收到client
  Systemoutprintln(客戶地址 + clientgetInetAddress());
  } catch (IOException e) {
  Systemoutprintln(正在等待客戶);
  }
  }
 
  客戶端代碼啟動之後便會連接服務器得到回應之後便會形成socket連接

  Socket clientsocket = null;
  try {
  clientsocket = new Socket(localhost);
  } catch (UnknownHostException e) {
  // TODO Autogenerated catch block
  eprintStackTrace();
  } catch (IOException e) {
  // TODO Autogenerated catch block
  eprintStackTrace();
  }

  socket的輸入和輸出一般用流來相互寫
  inread()和outwrite()
  inreadObject()和outwriteObject(object)
  客戶端的一個線程裡面同時new了多個ObjectOutputStream流是不允許的其它的流可以ObjectOutputStream有鎖機制
  如果是一般的輸入和輸出流的話用

  DateOutputStream out = null;
  DateInputStream in = null;
  //獲得輸入輸出流
  try {
  out=new DateOutputStream(socketgetOutputStream());
  in=new DateInputStream(socketgetInputStream());
  } catch (IOException e) {
  // TODO Autogenerated catch block
  eprintStackTrace();
  }

  如果是對象上的輸入和輸出的話用

  ObjectOutputStream out = null;
  ObjectInputStream in = null;
  //獲得輸入輸出流
  try {
  out=new ObjectOutputStream(socketgetOutputStream());
  in=new ObjectInputStream(socketgetInputStream());
  } catch (IOException e) {
  // TODO Autogenerated catch block
  eprintStackTrace();
  }

  如果復雜之後可以是服務器啟動之後對每個客戶端啟動一個線程與客戶端的線程進行交互
 


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27537.html
  • 上一篇文章:

  • 下一篇文章:
  • Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.