java关于多线程的部分操作
http://www.zftb.cn  发布时间:2015-04-06 16:06 来源:一起学编程网 浏览:加载中

一般服务器端代码,每次收到一个线程,一个client就会产生:

  /************************ 开始监听 **************************/

  int port = 4311;

  ServerSocket server = null;//服务器

  Socket client = null;//客户端

  try {

  server = new ServerSocket(port);

  } catch (IndirectionException e1) {

  System.out.println("正在监听……");

  }

  while(true)

  {

  System.out.println("等待客户"+i);

  i++;

  try {

  client = server.accept();//开始监听线程,接收到client

  System.out.println("客户地址:" + client.getInetAddress());

  } catch (IOException e1) {

  System.out.println("正在等待客户");

  }

  }

  客户端代码,启动之后便会连接服务器,得到回应之后便会形成socket连接

  Socket clientsocket = null;

  try {

  clientsocket = new Socket("localhost",4311);

  } catch (UnknownHostException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

socket的输入和输出一般用流来相互写。
  in.read()和out.write(),
  in.readObject()和out.writeObject(object)。
  客户端的一个线程里面同时new了多个ObjectOutputStream流是不允许的,其它的流可以。ObjectOutputStream有锁机制。
  如果是一般的输入和输出流的话用:
  DateOutputStream out = null;
  DateInputStream in = null;
  //获得输入输出流
  try {
  out=new DateOutputStream(socket.getOutputStream());
  in=new DateInputStream(socket.getInputStream());
  } catch (IOException e2) {
  // TODO Auto-generated catch block
  e2.printStackTrace();
  }
  如果是对象上的输入和输出的话用:
  ObjectOutputStream out = null;
  ObjectInputStream in = null;
  //获得输入输出流
  try {
  out=new ObjectOutputStream(socket.getOutputStream());
  in=new ObjectInputStream(socket.getInputStream());
  } catch (IOException e2) {
  // TODO Auto-generated catch block
  e2.printStackTrace();
  }
  如果复杂之后,可以是服务器启动之后对每个客户端启动一个线程与客户端的线程进行交互。

如果你有好的win10资讯或者win10教程,以及win10相关的问题想要获得win10系统下载的关注与报道。
欢迎加入发送邮件到657025171#qq.com(#替换为@)。期待你的好消息!