服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java进阶:基于socket的java网络编程集粹

其实,简单的分析一下,就可以看出客户和服务通讯的主要通道就是socket本身,而服务器通过accept方法就是同意和客户建立通讯.这样当客户建立socket的同时。服务器也会使用这一根连线来先后通讯,那么既然如此只要我们存在多条连线就可以了。那么我们的程序可以变为如下:
那么下面的问题是如何使用线程.首先要做的事情是创建线程并使得其可以和网络连线取得联系。然后由线程来执行刚才的操作,要创建线程要么直接继承thread要么实现runnable接口,要建立和socket的联系只要传递引用就可以了.而要执行线程就必须重写run方法,而run方法所做的事情就是刚才单线程版本main所做的事情,因此我们的程序变成了这样:


import java.net.*;
  import java.io.*;

  public class multiuser extends thread{
  private socket client;

  public multiuser(socket c){
  this.client=c;
  }

  public void run(){
  try{
   bufferedreader in=new bufferedreader(new inputstreamreader(client.getinputstream()));
   printwriter out=new printwriter(client.getoutputstream());
   //mutil user but can parallel
   while(true){
    string str=in.readline();
    system.out.println(str);
    out.println("has receive....");
    out.flush();
    if(str.equals("end"))
     break;
   }
   client.close();
  }catch(ioexception ex){
  }finally{
  }
  }

  public static void main(string[] args)throws ioexception{
  serversocket server=new serversocke