黑马程序员-----网络编程

------- android培训java培训、期待与您交流! ----------

IP地址:InetAddress      此类表示互联网协议(IP)地址

InetAddress:  此类表示互联网协议 (IP) 地址。
   IP 地址是 IP 使用的 32 位或 128 位无符号数字  
  方法:
public static InetAddress getLocalHost()
        throws UnknownHostException返回本地主机。
        public String getHostName()获取此 IP 地址的主机名。
      public String getHostAddress()返回 IP 地址字符串(以文本表现形式)。        
                public static InetAddress getByName(String host)
        throws UnknownHostException在给定主机名的情况下确定主机的 IP 地址。 

网络编程: Socket编程
网络编程的三要术:
1,IP地址
2,端口号
3,传输协议
传输协议:
udp:
面向无连接。
不可靠。
速度快。
将数据封包传输,数据包最大64k。
举例:
聊天留言,在线视频,视频会议,发短信,邮局包裹。
tcp:
面向连接。
安全可靠
效率稍低。
通过三次握手确保连接的建立。
举例:
下载,打电话,QQ聊天(你在线吗,在线,就回应下,就开始聊天了)

UDP协议如何编写程序完成数据的传输:
发送端:
1, 创建DatagramSocket数据包Socket对象(港口)
2, 准备要发送的数据
3, 创建DatagramPacket 数据包,把数据放入数据包中 (仓库)
4, 发送数据 Send( DatagramPacket  dp)
5, 关闭Socket流
接收端:
1, 创建DatagramSocket数据包Socket对象(港口)
2, 创建DatagramPacket 数据包(空的仓库)
3, 接收数据,存储到数据包(仓库)中   receive( DatagramPacket dp)
4, 获取数据包(仓库)中的内容
5, 关闭Socket流

TCP协议如何编写程序完成数据的传输:
客户端:
1, 创建客户端Socket对象,连接服务器
2, 获取客户端Socket对象中输出流
3, 通过输出流,写数据到服务器
4, 告知服务器端,客户端数据发送完毕, s.shutdownOutput()
5, 获取客户端Socket对象中的输入流
6, 通过输入流,接收反馈信息
7, 关闭Socket
服务器端:
1, 创建服务器端ServerSocket对象
2, 等待客户端的连接,返回客户端Socket对象
3, 获取客户端Socket对象中输入流
4, 通过输入流获取,客户端发来的数据
5, 获取客户端Socket对象的输出流
6, 给客户端编写反馈信息
7, 关闭Socket

代码

import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/*
 * 4, 客户端写入数据到 服务器端Server.txt文件中,
          写入完毕后,服务器端返回消息给客户端,"写入数据成功"
 */
public class Server {
	public static void main(String[] args) throws IOException {
		//创建ServerSocket对象
		ServerSocket ss = new ServerSocket(12345);
		//等待客户端Socket对象
		Socket s = ss.accept();
		//显示出已连接客户端的IP地址
		String ip = s.getInetAddress().getHostAddress();
		System.out.println("IP = " + ip);
		
		//--------------------------------
		//接收客户端发来的数据,把数据写入到Server.txt文件中
		//数据源
		//s.getInputStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
		//目的地
		PrintWriter pw = new PrintWriter(new FileWriter("Server.txt", true),true);//刷新与追加功能
		//读
		String line = null;
		while ((line = br.readLine()) != null){
			//写,数据写入到Server.txt文件中
			pw.println(line);
		}
		//关闭操作文件的流
		pw.close();
		//---------------------------
		//反馈信息给客户端
		PrintWriter pwClient = new PrintWriter(s.getOutputStream(), true);
		pwClient.println("注册成功!");
		
		//关闭Socket
		s.close();
		
		
	}
}

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

/*
 * 4, 客户端写入数据到 服务器端Server.txt文件中,
          写入完毕后,服务器端返回消息给客户端,"写入数据成功"
 */
public class Client {
	public static void main(String[] args) throws UnknownHostException, IOException {
		//创建客户端Socket对象,连接服务器
		Socket s = new Socket("192.168.35.85", 12345);
		//发送数据给服务器端
		PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
		pw.println("admin=123456");
		//告知服务器端,发送数据完毕
		s.shutdownOutput();
		
		//-------------------------------
		//获取反馈信息
		BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
		String data = br.readLine();
		System.out.println("客户端: " + data);
		
		//关闭Socket流
		s.close();
	}
}

总结

在使用过程中我们大多数时候都是使用的TCP连接,通过三次握手确保连接的建立。因为它安全可靠,例如下载东西,打电话等需要

UDP虽然快捷,但是不可靠,不安全,例如在线视频,发短信等

在程序设计过程中要理清楚客户端与服务器之间的连接关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值