//网络通信的第一个要素:IP地址。通过IP地址,唯一的定位互联网上一台主机
//InetAdress:位于java.net包下
//1.InetAddress用来代表IP地址.一个InetAdress对象就代表一个IP地址
//2.如何获取InetAdress对象:getByName(String host)//host:域名
// 获取本机的IP:getLocalHost();
//3.getHostName():获取IP地址对应的域名
// getHostAddress(): 获取IP地址
TCP编程:
服务端和客户端的连接:
客户端发送信息到服务端.服务端输出此信息到控制台上
网络编程实际上就是Socket的编程
客户端:
1.创建一个Socket的对象,通过构造器指明服务端的IP地址,以及其接收程序的端口
2.getOutoutStream():发送数据,方法返回一个OutoutStream的对象
3.具体的输出过程
4.关闭相应的流和Socket对象
public void client(){
try {
Socket socket=new Socket(InetAddress.getLocalHost(),9999);
OutputStream os= socket.getOutputStream();
os.write("我是客户端,haaa".getBytes());
os.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
服务端:
1.创建一个SeverSocket的对象,通过构造器指明自身的端口号
2.调用其acept()方法,返回一个Socket对象
3.调用Socket对象的getInputStream()获取一个客户端发送过来的一个输入流
4.对获取的流的操作
5.关闭相应的流以及Socket和SeverSocket的对象
public void server(){
try {
ServerSocket ss=new ServerSocket(9999);
Socket s = ss.accept();
InputStream is = s.getInputStream();
byte[] b=new byte[20];
int len;
while((len=is.read(b))!=-1){
String str=new String(b,0,len);
System.out.println(str);
}
is.close();
s.close();
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
UDP编程:
* 1)不需要建立连接通道
* 2)数据大小有限制
* 3)不可靠连接---->传输速度快!
发送端
* 1)创建发送端的Socket对象
* 2)创建数据,并打包
* 3)调用当前发送端Socket对象中的发送的方法
* 4)关闭资源
public void send() {
try {
DatagramSocket ds = new DatagramSocket();
Scanner scan = new Scanner(System.in);
String str1 = scan.nextLine();
byte[] b = str1.getBytes();
// 创建一个数据报:每一个都不能大于64k,都记录着数据信息,发送端的IP、端口号、以及要发送到的接收端的IP和端口号
DatagramPacket dp = new DatagramPacket(b, 0, b.length, InetAddress.getLocalHost(), 4396);
ds.send(dp);
ds.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
接收端
* 1)创建Socket对象
* 2)创建一个数据报包(接收容器)
* 3)调用Socket对象中的接收的方法
* 4)解析实际传递的数据
* 5)将解析的数据(ip,数据)展示在控制台上
* 6)关闭资源
public void recive(){
try {
DatagramSocket ds = new DatagramSocket(4396);
byte[] b=new byte[1111];
DatagramPacket dp=new DatagramPacket(b,0,b.length);
ds.receive(dp);
String str=new String(dp.getData(),0,dp.getLength());
System.out.println(str);
ds.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}