网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Java编程 >> 文章正文
  Java的网络编程(TCP/IP)            【字体:
Java的网络编程(TCP/IP)
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-12    

毫无疑问,正是java优秀的网络程序设计功能使java能够风靡全世界。
正在装载数据……

java关于网络编程的API,类不多,但是要熟练的、深入的掌握,需要下很足功夫,多多练习


网络编程:简单的说,就是使两台计算机能够互相通讯数据而已。

网络通讯:就是网络上计算机直接或间接地通过网络协议与其他计算机进行通讯。

网络协议:TCP/IP
    Transmission Control Protocol 传输控制协议
    Internet Protocol 互联网协议


连接协议:分为面向连接协议Connection Oriented Protocol和非连接协议Connectionless Protocol
    1)面向连接协议是指两台电脑在传输数据前,先会建立一个专属的连接。就如电信局的交换机会为打电话双方提供专属连接一样。
    Internet上的面向连接协议就是TCP/IP
    特点:确认回应;分组序号;流量控制。
    TCP/IP属于可靠性传输,适合不容许有传输错误的网络程序设计使用

    2)非连接协议:无专属连接,无分组,容错,距离短,可同时对多台电脑进行数据传输
    Internet上的非连接协议就是UDP User Datagram Protocol

TCP在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输(FTP)都需要不定长度的数据被可靠地传输。相比之下UDP操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序。

Socket 是程序与网络间的一种接口,大部分网络应用程序都是点对点的,所谓点就是服务器端和客户端所执行的程序。Socket是用来接收和传送分组的一个端点。

总之,学习java网络编程就是学习如何使用java的关于网络通讯的5个API,掌握并熟练运用它们

这5个类分别是:InetAddress类,Socket类,ServerSocket类,Datagram类,MulticastSocket类

1.InetAddress类没有提供构建者,不能用new来产生对象,只能它的方法来产生对象

InetAddress inetadd = InetAddress.getLocalHost();
inetadd.getHostAddress();
inetadd.getHostName();
inetadd.toString();
2.Socket类
InetAddress和Socket类是属于TCP面向连接协议,Datagram类和DatagramPacket类则属于UDP非连接协议的传送类
 构造
  Socket(InetAddress address, int port);
  Socket(InetAddress address, int port, boolean stream);
  Socket(String host, int prot);
  Socket(String host, int prot, boolean stream);
  Socket(SocketImpl impl)
  Socket(String host, int port, InetAddress localAddr, int localPort)
  Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
  ServerSocket(int port);
  ServerSocket(int port, int backlog);
  ServerSocket(int port, int backlog, InetAddress bindAddr)
 连接
  Socket client = new Socket("127.0.01.", 80);
  ServerSocket server = new ServerSocket(80);
 注意:
 1.在选择端口时,必须小心。每一个端口提供一种特定的服务,只有给出正确的端口,才能获得相应的服务。0~1023的端口号为系统所保留,例如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口号为23, 所以我们在选择端口号时,最好选择一个大于1023的数以防止发生冲突。
  
 2.在创建socket时如果发生错误,将产生IOException,在程序中必须对之作出处理。所以在创建Socket或ServerSocket是必须捕获或抛出例外。
 ...
 private void makeConnection()
 {
  try
  {
   InetAddress srvAddr = InetAddress.getName(srvName);
   socket = new Socket(srvAddr,srvPort);
   dataIn = new DataInputStream ( new BufferedInputStream( sock.getInputStream() ) ) ;
   dataOut = new DataOutputStream ( new BufferedOutputStream( sock.getOutputStream() ) ) ;

   System.err.println("Connection to server ok");
  }
  catch ( IOExcept io )
  {
   System.err.println("Error" + io);
  }
  public void stop()
  {
   try
   {
    dataOut.close();
    dataIn.close();
    sock.close();
   }
   catch ( IOExcept io )
   {
   }
  }
 }
 ...
 发送
 dataOut.writeUTF( strmsg );
 dataOut.flush();

3.Datagram类是用来建立UDP的socket
 构造
  DatagramSocket();
  DatagramSocket(int prot);
  DatagramSocket(int port, InetAddress laddr)

4.DatagramPacket类是负责UDP的数据传送
 构造
 DatagramPacket(byte buf[],int length);
  DatagramPacket(byte buf[], int length, InetAddress addr, int port);
  DatagramPacket(byte[] buf, int offset, int length);
  DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port);

 接收
  DatagramPacket packet=new DatagramPacket(buf, 256);
  Socket.receive (packet);
  发送
 DatagramPacket packet=new DatagramPacket(buf, length, address, port);
  Socket.send(packet);

学好Java网络编程,Java语言,最重要的还是在于多多练习!
 




本文来源:http://blog.csdn.net/achan2090/archive/2007/09/09/1778130.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     用java实现web服务器
     用java快速开发linux gu…
     正则表达式分解siemens交…
     [portal参考手册]目录
     jsp中调用oracle存储过程…
  • JSP中JavaBean的生命周期

  • Java Swing实现俄罗斯方块

  • 快速、简便使用AJAX技术的三…

  • java异常处理机制的深入理解

  • [转]Java堆和栈的区别 经典总…

  • 关于java Applet

  • java 设计工厂模式

  • Core Java 之旅

  • 专访Java之父:Java未来的发…

  • 开发手记---JAVA数据库连接池

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David