Java基础之网络编程

时间:2014-10-06 17:56:50   收藏:0   阅读:230

IP地址

IP地址是由32位或者128位无符号数表示的网络层通信地址,是一种低级协议,TCP和UDP协议都是在它的基础上构建的。Java中使用InetAddress来表示IP地址,它有两个子类Inet4Address和Inet6Address,分别表示IPV4和IPV6。

getByName()方法通过主机名获取到InetAddress对象,若有多个主机,则使用getAllByName()返回InetAddress对象数组。

Socket套接字

Socket是提供网络服务的一种机制,通信的两端都有socket,两端通过socket进行通信。InetSocketAddress封装了IP+端口号。

?

TCP/UDP协议的特点

UDP协议

UDP协议将数据封装成数据报,大小在64KB以内,无须建立连接,速度快,不可靠。Java使用DatagramSocket类描述用来发送和接收数据包的socket,而使用DatagramPacket来描述UDP协议的数据包,用于描述无连接包投递服务。

数据发送

数据接收

  1. 建立UDPsocket服务,指定监听端口:DatagramSocket ds=new DatagramSocket(receiveport);
  2. 定义数据包用来接收数据:DatagramPacket dp=new DatagramPacket(buf,buf.length)
  3. 通过socket接收功能接收数据并提取:ds.receive(dp);dp.getData();
  4. 关闭资源:ds.close()

TCP协议

TCP协议需要建立连接,在连接中传输大量数据(不需封装成数据报),通过三次握手完成连接,是可靠协议,但效率低。Java使用Socket来描述客户端的socket服务,使用SocketSever来描述服务器端的socket服务。

客户端

  1. 创建客户端并指定要连接的服务器的IP和端口:Socket cs=new Socket(InetAdress,serverport)
  2. 通过socket对象中的输入流和输出流分别发送和接收数据:
  3. 获取到输出流OutputStream os=cs.getOutputStream();
  4. 将数据写入到输出流中:os.write(byte[]);
  5. 获取到输入流:InputStream is=cs.getInputstream()

服务器端

  1. 创建服务端的ServerSocket服务,并监听一个端口:SeverSocket ss=new ServerSocket(serverport)
  2. 获取连接过来的客户端对象:Socket s=ss.accept();该方法是阻塞式方法。
  3. 使用客户端对象的读取流来读取发送过来的数据:
  4. 获取到输入流InputStream is=s.getInputstream()
  5. 将数据读取到字节数组中Is.read(buf)
  6. 获取到输出流:OutputStream os=s.getOutputStream();
  7. 通信完毕关闭客户端s.close()

ServerSocket对象初始化时,可以通过设置backlog参数来指定能最大连接到服务器的客户端个数

URL类

URL是统一资源定位符,该类可以根据指定形式构建URL对象。

?

URLConnection类

该类是抽象类,有两个子类HttpURLConnection和JarURLConnection来实现。该类封装了传输层的socket对象,可以直接读取socket流对象

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!