JAVA基础之网络编程
2014-01-19 14:11
197 查看
网络编程就是在多个设备之间传输数据~
在java.net里有InetAddress类
部分使用例子如下:
本地回环地址:127.0.0.1
UDP:是发送数据前不需要建立连接,面向的是无连接-就是说,在发送数据前并不需要确定对方是否在线,直接发过去,如果不在线就会丢包,所以是不可靠的协议,但是它的优点在于速度快。注意它发送的数据包大小限制在64k以下。
有效的端口号:0--65535,其中0--1024是系统使用或保留的端口
在java中为套接字弄成了一个类,下面会讲到。
(2)使用DatagramPacket(byte[] buf,int length,InetAddress address,int port)创建要发送的数据包。
(3)使用DatagramSocket()类的send()方法发送数据包。
(2)使用DatagramPacket(byte[] buf,int lenght)创建自己数据来接收数据包。
(3)使用DatagramPacket类的receive()方法接收UDP包。
(1)DatagramPacket(byte[] buf,int length)。
指定了数据包的内存空间大小。
(2)DatagramPacket(byte[] buf,int length,InetAddress address,int port)。
不仅指定了数据包的内存空间大小,还指定了数据包的目标地址和端口。在发送数据时,必须指定接收方的Socket地址和端口号,所以使用这种构造函数可创建发送数据的DatagramPacket对象。
(1)DatagramSocket()。
这种方式创建DatagramSocket对象,会将其绑定到本地主机上任何可用的端口。
(2)DatagramSocket(int port)。
这种方式创建DatagramSocket对象,会将其绑定到本地主机上指定的端口。
(3)DatagramSocket(int port,InetAddress addr)。
这种方式创建DatagramSocket对象,会将其绑定到本地主机上指定的本地地址。适用于多网卡和多IP地址的情况。
示例
结果:
(1)ServerSocket()。
创建非绑定服务器套接字。
(2)ServerSocket(int port)。
创建绑定到特定端口的服务器套接字。
(3)ServerSocket(int port,int backlog)。
利用指定的backlog创建服务器套接字并将其绑定到指定的本地端口号。
(4)ServerSocket(int port,int backlog,InetAddress bindAddress)。
使用指定的端口。侦听backlog和要绑定到的本地IP地址创建服务器(适用于多网卡和多个IP的情况)。
常用方法有:
1)Socket accept()
等待客户机连接,若连接,则创建一套接字
2)boolean isBound()
判断ServerSocket的绑定状态
3)InetAddress getInetAddress()
返回本地IP
4)boolean isClosed()
返回关闭状态
5)void close()
关闭
6)void bind(socketAddress endpoint)
绑定到指定地址
7)int getInetAddress()
返回服务器套接字等待的端口号
1.网络协议
⑴ip协议
IP是Internet Protocol的简称。ip地址其实就是每台主机在网络上的标识。目前有两种表现形式:IPv4(四个字节表示)、IPv6(16个字节表示)在java.net里有InetAddress类
部分使用例子如下:
InetAddress a1=InetAddress.getByName("192.168.1.2");//创建对象 System.out.println(a1.getHostName());//获取此ip地址的主机名
本地回环地址:127.0.0.1
⑵TCP与UDP协议
TCP:在发送数据前,需要确定对方已在线并做好接收准备,形成好传输数据的通道(通过三次握手完成确认连接好),所以它是可靠的协议,缺点是速度会变慢。UDP:是发送数据前不需要建立连接,面向的是无连接-就是说,在发送数据前并不需要确定对方是否在线,直接发过去,如果不在线就会丢包,所以是不可靠的协议,但是它的优点在于速度快。注意它发送的数据包大小限制在64k以下。
2.套接字与端口
⑴端口(port)
就是用于标识进程的逻辑地址,不同进程的标识。有效的端口号:0--65535,其中0--1024是系统使用或保留的端口
⑵套接字(Socket)
就是用于将应用程序与端口连接起来,相当于插插头的插座。在java中为套接字弄成了一个类,下面会讲到。
3.UDP之DatagramPacket类、DatagramSocket类
⑴UDP通信基本步骤
①发送数据包
(1)使用DatagramSocket()创建一个数据套接字。(2)使用DatagramPacket(byte[] buf,int length,InetAddress address,int port)创建要发送的数据包。
(3)使用DatagramSocket()类的send()方法发送数据包。
②接收数据包
(1)使用DatagramSocket(int port)创建数据包套接字,绑定到指定端口。(2)使用DatagramPacket(byte[] buf,int lenght)创建自己数据来接收数据包。
(3)使用DatagramPacket类的receive()方法接收UDP包。
⑵DatagramPacket类
用来表示数据包,其构造函数有:(1)DatagramPacket(byte[] buf,int length)。
指定了数据包的内存空间大小。
(2)DatagramPacket(byte[] buf,int length,InetAddress address,int port)。
不仅指定了数据包的内存空间大小,还指定了数据包的目标地址和端口。在发送数据时,必须指定接收方的Socket地址和端口号,所以使用这种构造函数可创建发送数据的DatagramPacket对象。
⑶DatagramSocket类
用于表示发送和接收数据包的套接字,其构造函数有:(1)DatagramSocket()。
这种方式创建DatagramSocket对象,会将其绑定到本地主机上任何可用的端口。
(2)DatagramSocket(int port)。
这种方式创建DatagramSocket对象,会将其绑定到本地主机上指定的端口。
(3)DatagramSocket(int port,InetAddress addr)。
这种方式创建DatagramSocket对象,会将其绑定到本地主机上指定的本地地址。适用于多网卡和多IP地址的情况。
示例
import java.net.*; class NetDemo { public static void main(String[] args)throws UnknownHostException { InetAddress ip=InetAddress.getLocalHost();//返回本地主机getLocationHost是静态方法!。 System.out.println(ip.getHostAddress());// System.out.println(ip.getHostName()); } } //--------------------------------------------------------------------------------------------------------------------------------------------- class faNetDemo//这个是发送端 { public static void main(String[] args)throws Exception { DatagramSocket ds =new DatagramSocket(); byte[] buf="JAVA".getBytes(); DatagramPacket dp= new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.3"),10000); ds.send(dp); ds.close(); } } //--------------------------------------------------------------------------------------------------------------------------------------------- class shouNetDemo//这个是接收端 { public static void main(String[] args)throws Exception { DatagramSocket ds=new DatagramSocket(10000); byte[] buf= new byte[1024]; DatagramPacket dp= new DatagramPacket(buf,buf.length); ds.receive(dp); String data=new String(dp.getData(),0,dp.getLength()); System.out.println(data); ds.close(); } }
结果:
4.TCP之ServerSocket类
⑴TCP程序
是指利用Socket类编写通信的程序,利用TCP协议进行通信的两个程序是有主次之分的,一个是服务器程序,另一个是客户机程序。⑵ServerSocket类
在java.net包中是用于表示服务器套接字,主要功能是等待来自网络上的请求,它可以通过指定的端口来等待连接的套接字,其构造函数有(都抛出IOException异常):(1)ServerSocket()。
创建非绑定服务器套接字。
(2)ServerSocket(int port)。
创建绑定到特定端口的服务器套接字。
(3)ServerSocket(int port,int backlog)。
利用指定的backlog创建服务器套接字并将其绑定到指定的本地端口号。
(4)ServerSocket(int port,int backlog,InetAddress bindAddress)。
使用指定的端口。侦听backlog和要绑定到的本地IP地址创建服务器(适用于多网卡和多个IP的情况)。
常用方法有:
1)Socket accept()
等待客户机连接,若连接,则创建一套接字
2)boolean isBound()
判断ServerSocket的绑定状态
3)InetAddress getInetAddress()
返回本地IP
4)boolean isClosed()
返回关闭状态
5)void close()
关闭
6)void bind(socketAddress endpoint)
绑定到指定地址
7)int getInetAddress()
返回服务器套接字等待的端口号
相关文章推荐
- 黑马程序员 Java基础知识总结-网络编程
- 黑马程序员—java基础学习--网络编程
- Java网络通信基础编程
- java网络编程基础知识
- Java网络编程基础
- 黑马程序员_java基础(12)网络编程之UDP
- Java网络编程基础概念
- java基础网络编程
- 黑马程序员——Java基础--网络编程
- 黑马程序员.Android攻城狮.JAVA基础.1.10.Java网络编程
- 黑马程序员——Java基础--网络编程
- Java学习笔记之网络编程基础-通过URL获取HTML页面
- java基础学习-- 网络编程之TCP和UDP
- 黑马程序员——Java基础---网络编程
- Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例
- Java基础_网络编程
- 黑马程序员---Java基础---网络编程
- Java基础知识-网络编程
- java网络编程基础
- Java基础24天--05--网络编程(浏览器客户端--Tomcat服务器)