首页 | 手机 | 笔记本 | 电脑硬件 | MP3 | 数码相机 | DV | 品牌机 | 办公 | 网络 | 服务器 | 投影机 | 新闻 | 游戏 | 学院 | 下载
Java Socket网络编程初级入门
2006-1-13 23:48:00 文/ 出处:Java研究组织
  事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作。Socket就是其中之一,对于Java而言,这些Api存在与java.net 这个包里面,因此只要导入这个包就可以准备网络编程了。

  网络编程的基本模型就是客户机到服务器模型,简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置。并去建立两者之间的联系,然后完成数据的通讯就可以了,这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端,基于这个简单的模型,就可以进入网络编程啦。

  Java对这个模型的支持有很多种Api,而这里我只想介绍有关Socket的编程接口,对于Java而言已经简化了Socket的编程接口。首先我们来讨论有关提供固定位置的服务方是如何建立的。Java提供了ServerSocket来对其进行支持.事实上当你创建该类的一个实力对象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问你,ServerSocket server=new ServerSocket(6789);这里稍微要注意的是端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的,另外端口号是从0~65535之间的,前1024个端口已经被Tcp/Ip 作为保留端口,因此你所分配的端口只能是1024个之后的。好了,我们有了固定位置.现在所需要的就是一根连接线了.该连接线由客户方首先提出要求。因此Java同样提供了一个Socket对象来对其进行支持,只要客户方创建一个Socket的实例对象进行支持就可以了。Socket client
  =new Socket(InetAddress.getLocalHost(),5678);客户机必须知道有关服务器的IP地址,对于着一点Java也提供了一个相关的类InetAddress 该对象的实例必须通过它的静态方法来提供,它的静态方法主要提供了得到本机IP 和通过名字或IP直接得到InetAddress的方法。

  上面的方法基本可以建立一条连线让两台计算机相互交流了,可是数据是如何传输的呢?事实上I/O操作总是和网络编程息息相关的。因为底层的网络是继续数据的,除非远程调用,处理问题的核心在执行上,否则数据的交互还是依赖于IO操作的,所以你也必须导入java.io这个包.java的IO操作也不复杂,它提供了针对于字节流和Unicode的读者和写者,然后也提供了一个缓冲用于数据的读写。


  BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
  PrintWriter out=new PrintWriter(server.getOutputStream());

  上面两句就是建立缓冲并把原始的字节流转变为Unicode可以操作,而原始的字节流来源于Socket的两个方法,getInputStream()和getOutputStream()方,分别用来得到输入和输出,那么现在有了基本的模型和基本的操作工具,我们可以做一个简单的Socket例程了.

  服务方:


  import java.io.*;
  import java.net.*;
  public class MyServer {
  public static void main(String[] args) throws IOException{
  ServerSocket server=new ServerSocket(5678);
  Socket client=server.accept();
  BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
  PrintWriter out=new PrintWriter(client.getOutputStream());
  while(true){
   String str=in.readLine();
   System.out.println(str);
   out.println("has receive....");
   out.flush();
   if(str.equals("end"))
    break;
  }
  client.close();
  }
  }

  这个程序的主要目的在于服务器不断接收客户机所写入的信息只到,客户机发送"End"字符串就退出程序,并且服务器也会做出"Receive"为回应,告知客户机已接收到消息。

  客户机代码:


  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"用来做退出标识。

  这个程序只是简单的两台计算机之间的通讯,如果是多个客户同时访问一个服务器呢?你可以试着再运行一个客户端,结果是会抛出异常的。那么多个客户端如何实现呢?

  其实,简单的分析一下,就可以看出客户和服务通讯的主要通道就是Socket本身,而服务器通过accept方法就是同意和客户建立通讯.这样当客户建立Socket的同时。服务器也会使用这一根连线来先后通讯,那么既然如此只要我们存在多条连线就可以了。那么我们的程序可以变为如下:


[第一页] 1 2 [下一页] [最后一页]
-
相关文章
-

更多相关:
在百度中更多内容:

- -
精彩推荐
IT产品热门报价
 手机 更多>>
 笔记本 更多>>
 数码产品 更多>>
 电脑硬件 更多>>
·注册淘宝会员购买便宜数码
IT世界下载频道 装机常用软件包  
泛泰超薄直板PG1400
索尼Napa新机曝光
新型入耳式耳塞 悠典U
5K出头入门游戏攒机方案
·诺基亚 7610
·索尼爱立信 K750c
·摩托罗拉 E398
·索尼 VGN-Y18C
·戴尔 Insprion 2200
·明基 Joybook S52-101
·佳能 PowerShot A510
·索尼 DSC-T7
·索尼 DSC-T5 HOT
·佳能 PowerShot A610
·佳能 PowerShot A520
·联想 家悦C1066E
·《金刚》
·火影忍者 HOT
·花田错
·让爱靠近
·王心凌
·千千静听
·腾讯TM2006新春版
·QQ珊瑚虫增强包V4.1.2
·高达SEED Destiny最终篇
·IT世界极速下载器 HOT
·Skype简体中文版
·完美卸载 2006
人物 男孩 女孩 白领 明星 杂志 部落 PARTY  
第18期数字男孩君豪
第19期数字男孩阿天
第20期数字男孩Keitf
书遭遇“超级女声”Lyya
·强贴整理:高手的140个电脑技巧
·专业:电脑维修的基本原则和方法
·05年台湾电子营收五哥排名落定
·话题:谈谈办公三大品牌的印象!
·老鸟谈数码相机,你会选择谁?
·办公族防衰老锦囊 懒人清理术
·日出日落拍摄技巧之三好法则
·真实拍摄假尼姑的变身术(图)
·女人故事:一个肯背你上楼的男人
·成都第一美女 回头率1000%辣妹
·钟丽缇大扮妖妇 FIFA小姐写真
·女人最消魂部位 让你放弃抵抗
IT下载中心,2G带宽,绝无仅有
.............【IT下载中心隆重推出装机常用软件包】

重点推荐:手机 | 笔记本 | MP4 | 数码摄像机 | 电脑硬件 | 显示器 | 投影机 | 服务器 | 游戏 | 数码相机 | 诺基亚 | 摩托罗拉 | 三星 | 索尼爱立信 | 联想 | 戴尔
关于我们 - 联系方式 - 频道共建 - 招聘信息 - 网站大事记 - 网站地图 - 广告服务 - 我要投稿 - 颐高集团 - 编辑部的故事 - 报案中心
IT.com.cn 力倡IT文化,崇尚互联共享,欢迎各种媒体转载我们的原创作品[转载请注明出处]。
客服热线:020-61081800 EMAIL:webmaster@it.com.cn 经营许可证编号:浙B2-20040150
带宽支持:佛山电信 服务器支持:五舟
关注IT,关注IT.com.cn,请向你的5个QQ好友宣传IT.com.cn,多谢支持!
 [设为首页]


做中国最好的IT网站