网络编程入门

一. 网络编程入门【了解】

	a. 软件架构介绍
		i. C/S架构:客户端/服务器 比如:QQ,百度网盘,淘宝App
		ii. B/S架构:浏览器/服务器 比如:网页QQ,网页淘宝 
	b. 网络通信协议
		i. TCP/IP协议
			1) TCP协议:传输控制协议
			2) IP协议:因特网协议
	c. java中支持的常见协议
		i. TCP协议:特点:面向连接(数据传输之前必须先建立连接,底层是通过"三次握手"建立连接)
		ii. UDP协议:用户数据报协议  特点:面向无连接(数据传输时不需要关系对方是否存在,甚至不需要关系对象是否开机)
	d. 网络编程的三要素
		i. 网络通信协议
		ii. IP地址
		iii. 端口号一共有0-65535号,其中1024以下的端口被牛逼软件厂商占用!!(我们写软件时,用1024以上的)
	e. 计算机小知识
		i. IP地址的分类
			1) IPv4:由32位二进制组成,大概42亿种IP,面临枯竭
			2) IPv6:由128位二进制组成
		ii. IP地址的相关命令
			1) ipconfig:查看本机IP
			2) ping 对方IP:测试你和对象网络是否畅通
			3) 特殊的IP地址:127.0.0.1(localhost): 本机回环地址(相当于Java中this)
		iii. InetAddress类的基本使用
			1) InetAddress类代表IP地址类
			2) InetAddress.getLocalHost();//获取主机(本机)的IP地址对象
			3) InetAddress.getByName(域名/IP地址);//获取其他机器的IP地址对象
			4) 成员方法
				a) String getHostName();获得主机名
				b) String getHostAddress();获得IP地址字符串

二. TCP通信

	a. TCP通信分为客户端和服务器
	b. TCP中的两个重要的类
		i. Socket类,代表客户端类
		ii. ServerSocket类,代表服务器端类
	c. Socket类
		i. 构造方法:public Socket(String ip,int port)//服务器的IP地址,服务器的端口号
		ii. 常用方法
			1) public OutputStream getOutputStream();获取连接通道中输出流
			2) public InputStream getInputStream();获取连接通道中输入流
			3) public void shutDownOutput();关闭连接通道中的输出流
			4) public void shutDownInput();关闭连接通道中的输入流
			5) public void close();关闭客户端对象
	d. ServerSocket类
		i. 构造方法:public ServerSocket(int port)指定服务器端使用的端口号
		ii. 常用方法:
			1) public Socket accept();接收连接到服务器的那个Socket对象,如果暂时没有客户端,该方法会阻塞
			2) public void close();关闭服务器端对象
	e. 简单的TCP通信实现(双向通信)
		i. 代码演示
		public class Socket01 {
		    public static void main(String[] args) throws IOException {
		        //1.创建Socket对象
		        Socket socket = new Socket("127.0.0.1",8888);
		        System.out.println("已经连接服务器·················");
		        //2.获取输出流
		        OutputStream outputStream = socket.getOutputStream();
		        //3.调用输出流的write方法
		        outputStream.write("我是客户端·············".getBytes());
		        System.out.println("已经成功发送···········");
		        //4.获取输入流
		        InputStream inputStream = socket.getInputStream();
		        //5.调用输入流的read方法
		        byte[] bs = new byte[1024];
		        int read = inputStream.read(bs);
		        System.out.println("服务器说:"+new String(bs,0,read));
		        System.out.println("客户端已关闭···············");
		        //6.释放资源
		        inputStream.close();
		        outputStream.close();
		        socket.close();
		
		    }
		}
		public class ServerSocket01 {
		    public static void main(String[] args) throws IOException {
		        //1.创建ServerSocket对象
		        ServerSocket serverSocket = new ServerSocket(8888);
		        System.out.println("服务器已启动············");
		        //2.接受连接到的客户端对象
		        Socket accept = serverSocket.accept();
		        System.out.println("有客户端进来············");
		        //3.获取输入流
		        InputStream inputStream = accept.getInputStream();
		        //4.调用输入流的read方法
		        byte[] bs = new byte[1024];
		        int len = inputStream.read(bs);
		        System.out.println("客户端说:"+new String(bs,0,len));
		        //5.获取输出流
		        OutputStream outputStream = accept.getOutputStream();
		        // 6.调用输出流的writer方法
		        outputStream.write("我已经收到了······".getBytes());
		        System.out.println("已成功发送·················");
		        System.out.println("服务器已关闭··············");
		        //7.释放资源
		        outputStream.close();
		        inputStream.close();
		        accept.close();
		        serverSocket.close();
		    }
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值