网络编程

网络编程



网络编程的三要素

举例:
	1.Ip地址
	2.端口号
	3.网络协议
		UDP和TCP
UDP和TCP的区别:
	1.是否需要建立连接通道
		UDP:不需要建立通道(QQ聊天,发短信)
		TCP:需要建立连接通道(打电话...)
	2.是否是可靠连接(是否安全)
		UDP:是一种不可靠连接,不安全---执行效率高
		TCP:是一种可靠连接,服务器---一直阻塞状态(同步的---安全性)执行效率低
	3.共同点
		UDP/TCP---两端都需要Socket(Socket编程)
应用协议
	http协议
	https协议(比上http协议)
 第一要素:
 	ip地址
 	192.168.128.1:使用点分十进制法
 第二要素:
 	端口号
 	使用360软件---查看当前计算机中每个软件的端口号
 	有效端口号:0-65535
 			0-1024:保留端口号
 			一般:80端口号:是不写的(省略)
 常见端口号:
 	Tomcat:8080
 	Redis:6575
 	MySQL软件:3306

UDP和TCP的区别

	1.是否需要建立连接通道
		UDP:不需要建立通道(QQ聊天,发短信)
		TCP:需要建立连接通道(打电话...)
	2.是否是可靠连接(是否安全)
		UDP:是一种不可靠连接,不安全---执行效率高
		TCP:是一种可靠连接,服务器---一直阻塞状态(同步的---安全性)执行效率低
	3.共同点
		UDP/TCP---两端都需要Socket(Socket编程)

InetAddress

没有构造方法,不能直接创建对象,提供一些成员方法使用:静态的

Runntime类:单例模式
提供静态方法,返回该类本身
public static InetAddress[] getAllByName(String host)
参数为主机名称
public String getHosAddress():返回IP地址字符串(文本表现形式)
public String getHostName():获取主机名

Socket编程

特点:
	1.两端都需要有Socket对象
	2.发送端/客户端:有对应IP地址和端口号
	3.接收端/服务端:绑定对应的端口号

UDP接收端的步骤

1.创建接收端
2.创建一个接受容器
3.接受数据
4.解析发送来的实际数据
5.展示数据
	获取IP地址的文本形式  getAddressClass()
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

//接受类
public class ReceiveDemo {

	public static void main(String[] args) throws IOException {
		
		//创建接收端Socket对象,绑定端口号
		DatagramSocket ds=new DatagramSocket(10010);
		//创建一个数据包
		byte[] bytes=new byte[1024];
		int length=bytes.length;
		DatagramPacket dp=new DatagramPacket(bytes, length);
		//接受数据
		while(true) {
			ds.receive(dp);
			//解析当前接受容器中的实际数据
			byte[] buf=dp.getData();
			int length2=dp.getLength();
			//获取接收端发送的数据:ip地址
			InetAddress address=dp.getAddress();
			String ip=address.getHostAddress();
			
			//展示数据
			String s=new String(buf,0, length2);
			System.out.println("数据是:"+s+" 是来自"+ip);
			
		}
		
	}
}

UDP发送端的步骤

1.创建发送端的Socket对象  
2.创建数据报包对象 
3.发送数据 send(Datagrampackett dp);



import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

//发送类
public class SendDemo {

	public static void main(String[] args) throws IOException {
		//创建键盘录入对象
		Scanner sc=new Scanner(System.in);
		//创建发送端的Socker对象
		DatagramSocket ds=new DatagramSocket();
		//创建数据数据报包对象:DatagramPacket
		System.out.println("请您输入你要发送的数据,最后以null为停止...");
		String s;
		while(!((s=sc.nextLine()).equals("null"))) {
			
			byte[] bytes=s.getBytes();
			int length=bytes.length;
			DatagramPacket dp=new DatagramPacket(bytes, length,
					InetAddress.getByName("10.12.156.212"),10010);
			//发送数据包
			ds.send(dp);
		}
		
		ds.close();
	}
}
·

TCP的基本使用

客户端Scoket
客户端实现步骤:
	1.创建客户端Scoket对象    Socket
	2.获取客户端通道内输出流,写入内容
	3.关闭资源
服务器端:ServerSocket
	1.创建服务器端的Socket对象,绑定端口
	2.进入阻塞状态,监听客户端连接
	3.获取动态(通道)内输入流,读数据
	4.展示数据
	5.释放资源
TCP的应用----IO流
客户端不断键盘录入数据,服务器端不断接收数据,展示数据
客户端的某个文本文件,服务器端复制文本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值