大学生“考研战”提前打响     北大更换两份问题试卷 研究生入学考试昨天开始     2005年硕士研究生入学英语考试英译汉原题作废     05年考研规则:开考60分钟不准交卷     北大女博士代言广告引争议 学业工作不能兼容?     北京招聘会显示:研究生招聘条件越来越苛刻     广东硕士招聘会女硕士受限制 用人单位诉说无奈     担心成为择偶障碍 九成女硕士放弃继续攻读博士     考研热绷紧谁的神经     不就业不离校 大学生缘何单恋“考研一枝花”?     考研频现文理大换行     今年考研人数不足130万     江苏两万名硕士、博士研究生冒雨赶人才大集     考研专业“冷热差”大     怀着感恩的心,谈我的考研体会与大家分享     错过考研报名可以补报     “考研承诺”=“画蛇添足”     2005年研究生考试新看点     考研大军热衷“跨专业”     考研一族的另一种生存方式     14岁“神童”北大读研 专家提出四个非智力问题     2004中国大学研究生院排名 清华北大浙大列三甲     2005考研大军正形成 明年竞争更加激烈     参加“西部计划”考研可加分     2004届大学毕业生的生存状况调查     “绿色通道”开通 国防生可带薪读研     暨南大学博士生考试 台湾地区考生增幅超过100%     大学扩招成风 应宽进严出遏制研究生“大跃进”     沪上各高校表示研究生教育收费将带动机制创新     广东研究生暂时不全额收费 穷学生照样也有书读     收藏本站  
课件  聊天  家教  图书  媒体  博客  校友录
美图  游戏  留学  教师  校长  家长  寝室录
Java进阶:基于Socket的Java网络编程集粹-程序设计-培训资源-培训平台-中国教育网络联盟
您的位置 / 首页 / 培训平台 / 培训资源 / 程序设计 / 正文
Java进阶:基于Socket的Java网络编程集粹
发布时间:2007-12-14 来源:网友提供
 

    其实,简单的分析一下,就可以看出客户和服务通讯的主要通道就是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"作为退出的命令

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

页面功能 【我来说两句】【查看留言】【 】【打印】【关闭
 相关文章
 高考指南 更多>>>
 大学生就业指导 更多>>>
中国教育网络
关于我们 | 网站导航 | 合作伙伴 | 广告服务 | 付款方式 | 招商合作 | 会员服务 | 招聘信息 | 客户投诉
中国教育网络联盟 版权所有 《中华人民共和国增值电信业务经营许可证》:黑ICP证020069号
地址:哈尔滨市开发区衡山路58号 邮编:150090 电话:0451-87000664 82335792 82335793 82335794
Copyright © 2000-2007 www.edu-chn.com All Rights Reserved