Java网络编程入门学习

原创 2005年05月31日 17:24:00

1.  基于URL的高层次java网络编程

  应用层的编程。 
  主要用到URL类(定义时需要指定服务器端的协议类型、主机/主机名+端口、文件/CGI服务名)。一般实现方法是:
  通过openStream()可以得到InputStream,即可读取www服务器上的资源;
  通过openConnection()可以得到URLConnection,即产生一个双向连接,以实现同服务器端的CGI程序进行交互。

2.  基于Socket的低层次java网络编程

  Socket—网络上双向通信的一端称为一个Socket,它由一个IP地址和一个端口号唯一确定。(在传统的UNIX环境下可以操作TCP/IP协议的接口不止Socket一个,Socket所支持的协议种类也不光TCP/IP一种,因此两者之间是没有必然联系的)
  
  在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程(传输层)。有TCP和UDP两种方式:TCP,面向连接,可靠,传输大小无限制,但需要连接建立时间,差错控制开销大;UDP,无连接,不可靠,每个报文限制在64K以下,但不需要建立连接的时间(每个数据报都包含有明确的地址信息),差错控制开销较小(在应用中根据需要进行控制)。实时系统一般采用UDP方式,如网络游戏、视频会议等,而Http、FTP、SMTP等应用则都是基于TCP方式。

  两种方式都可以实现C/S结构的网络应用。
  <1> TCP方式
  主要用到的类有Socket,ServerSocket。一般实现过程是:
  服务器端用一个ServerSocket对象对一个指定的端口进行监听;
  客户端用一个Socket对象向服务器发出连接请求;
  服务器一旦收到某个客户端的请求后就建立起一个连接(同时也会生成一个Socket对象),然后启动一个线程来处理该Socket对象与客户端Socket对象的对话,ServerSocket对象继续监听端口;
  由于是面向连接的,所以可以通过Socket的getOutputStream()和getInputStream()得到输入输出流来对端口实现读写操作,实现在双方进行数据传输;
  对话完毕后,关闭输入输出流、关闭Socket.
  *广播:需要在服务器中保存连接列表,广播时遍历该列表对所有连接逐个发送广播数据。
  *一般在客户端要构造一个线程来一直监听服务器的输出以便接收广播。
  *需要注意的是读写端口操作实际上是对缓冲区进行的,输出时最好紧接着flush。
  <2> UDP方式
  主要用到的类有DatagramSocket(用于通信连接),DatagramPacket(表示一个数据报)。一般实现过程是:
  通信双方均需要定义一个DatagramSocket,其中一开始处于监听一方(一般为服务器)要指定端口;
  在客户端将要传送的数据组织成一个DatagramPacket并在其中指定服务器的地址信息,通过DatagramSocket的send()方法发送出去;
  服务器端使用DatagramSocket的receive()方法监听端口一旦收到就将其放入一个事先定义好的DatagramPacket中,随后可进行处理;
  服务器向客户端发送数据报的情况可由此类推;
  通信完成后要关闭DatagramSocket.
  *广播:UDP广播使用特有的类MulticastSocket实现。在广播接收方定义一个广播地址(D类地址)InetAddress,将DatagramSocket用MulticastSocket代替(其中需指定端口)并使用joinGroup()方法将其绑定到广播地址同时用receive()监听广播;发送广播一方只需将要广播的数据、上述广播地址和端口组织成一个DatagramPacket发送出去即可。MulticastSocket的leaveGroup()可以解除对广播地址的绑定。
  *数据报是及时发出的,而非缓冲方式。

Java网络编程 入门学习笔记(一)

先来个简单的例子: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRead...
  • qqMCY
  • qqMCY
  • 2014年01月19日 21:12
  • 1235

Java.NIO_网络编程_入门讲解

  • 2013年12月11日 17:06
  • 90KB
  • 下载

java网络编程入门教程

网络编程技术是当前一种主流的编程技术,随着联网趋势的逐步增强以及网络应用程序的大量出现,所以在实际的开发中网络编程技术获得了大量的使用。本章中以浅 显的基础知识说明和实际的案例使广大初学者能够进入网络...

Java网络编程从入门到精通 (9):使用isXxx方法判断地址类型

转自:http://www.blogjava.net/nokiaguy/archive/2009/04/archive/2009/nokiaguy/archive/2009/04/26/267589....
  • DADADIE
  • DADADIE
  • 2015年04月16日 09:36
  • 712

Java网络编程从入门到精通(3):为什么不能直接通过IP访问网站

转自:http://www.blogjava.net/nokiaguy/archive/2009/03/archive/2009/03/archive/2009/03/31/263058.html ...
  • DADADIE
  • DADADIE
  • 2015年04月15日 16:14
  • 867

Java网络编程从入门到精通(4):DNS缓存

在通过DNS查找域名的过程中,可能会经过多台中间DNS服务器才能找到指定的域名,因此,在DNS服务器上查找域名是非常昂贵的操作。在Java中为了缓解这个问题,提供了DNS缓存。当InetAddress...

JAVA网络编程入门的两个demo(TCP+UDP)

TCP服务器端 package org.bruce.basic; import java.io.DataInputStream; import java.io.IOException; imp...

Java网络编程从入门到精通(18):Socket类的getter和setter方法(2)

转自: http://www.blogjava.net/nokiaguy/archive/2009/05/archive/2009/05/archive/2009/05/archive/2009/0...
  • DADADIE
  • DADADIE
  • 2015年04月16日 16:46
  • 780

Java网络编程从入门到精通(20):HTTP协议简介

转自: http://www.blogjava.net/nokiaguy/archive/2009/05/archive/2009/05/archive/2009/05/archive/2009/0...
  • DADADIE
  • DADADIE
  • 2015年04月16日 17:09
  • 1186

Java网络编程从入门到精通(16):客户端套接字(Socket)的超时

客户端套接字的超时(timeout)就是指在客户端通过Socket和服务器进行通讯的过程中,由于网络延迟,网络阻塞等原因,造成服务器并未及时响应客户端的一种现象。在一段时间后,客户端由于未收到服务端的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java网络编程入门学习
举报原因:
原因补充:

(最多只允许输入30个字)