首页  |  论坛  |  驱动  |  软件  |  说明书  |  大家电  |  数字报道  |  数字家庭  |  数字办公  |  数字通讯  |  数字时尚  |  宽带生活  |  数字理财  |  平板电视
冰箱  |  空调  |  音响  |  厨卫  |  经销商  |  洗衣机  |  液晶电视  |  数字电视  |  电器网点  |  家电首页  |  数字学院  |  数字奥运  |  数字生活  |  家居知识
  
Java进阶:基于Socket的Java网络编程集粹
整理编辑:live01.com  最后更新  2007-11-26

 其实,简单的分析一下,就可以看出客户和服务通讯的主要通道就是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 ServerSocket(5678);
  while(true){
  //transfer location change Single User or Multi User
  MultiUser mu=new MultiUser(server.accept());
  mu.start();
  }
  }
  }

 

客户端代码:

import Java.net.*;
import Java.io.*;

public class Client{
static Socket Server;

public static void main(String[] args) throws Exception
{
Server=new Socket (InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(new InputStreamReader(Server.getInputStream()));
PrintWriter out=new PrintWriter(Server.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true)
{
String str=wt.readLine();
out.println(str);
out.flush();
if(str.equals("end"))
{
break;
}
System.out.println(in.readLine());
}
Server.close();
}
}

这段程序是接受客户的键盘输入,并把信息输出到服务端。并把"end"作为退出的命令

以上程序完成了两台计算机的简单通信。


 

                                                                    来源:
    
   
上一篇:Java语言安全机制在移动Agent中的应用   下一篇:没有了
 1、本站文章部分来源于互联网,转载是为了更好信息共享。如果侵犯了您的合法权益,请及时  通知我们,我们将第一时间删除。
 2、数字生活网力倡IT文化,崇尚互联共享,欢迎各种媒体转载我们的原创文章,转载请注明出  处(包括作者):数字生活网(www.live01.com)
相关文章
最新文章
 
热点文章
  
关于我们 | 免责说明 | 广告服务 | 给我留言 | 联系我们 | 友情链接 | 网站地图
Copyright @ 2006-2008 live01.com. All rights reserved. live01数字生活网 版权所有
京ICP备06025320号