黑马程序员__网络编程

---------------------- Android开发java培训、期待与您交流! ----------------------

网络编程

1、找到对方IP:127.0.0.1本地回环地址,测试网卡。

2、数据要发送到对方指定的应用程序。为了标识这些应用程序对这些网络应用程序都用数字进行标识,这些数字

就叫做端口(逻辑端口)0-65535其中0-1024为系统保留端口

3、定义通信规则:这个规则成为协议。国际通用协议TCP/IP

网络通讯要素:IP地址、端口号、传输协议

OSI 7层参考模型 TCP/IP 5层模型

应用层 应用层

表示层 传输层

会话层 网络层

传输层 数据链路层

网络层 物理层

数据链路层

物理层

IP地址:

1、网络中设备的标识

2、本地回环地址:127.0.0.1 主机名:localhost

InetAddress类:

此类没有构造函数,通过调用静态方法返回本类对象

static InetAddress getLocalHost() //返回本地主机
String getHostAddress()  //返回IP地址字符串
String getHostName()  //获取此IP地址的主机名
public static InetAddress getByName(String host)  //在给定主机名的情况下确定主机的 IP 地址


1、将数据及源和目的封装成数据包中,不需要建立连接

2、每个数据报的大小限制在64K内

3、因无连接,是不可靠协议

4、不需要建立连接,速度快

TCP:面向连接

1、建立连接,形成传输数据的通道

2、在连接中进行大数据量传输

3、通过三次握手完成连接,是可靠协议

4、必须建立连接,效率稍低

Socket:

1、Socket是为网络服务提供的一种机制

2、通信的两端都有Socket

3、网络通信其实就是Socket间通信

4、数据在两个Socket间通过IO传输

 

/*实例:通过UDP传输方式,将一段文字数据发送出去。定义UDP发送端
思路:
1、建立UDPSocket服务
2、提供数据,并将数据封装到数据包中
3、通过Socket服务的发送功能,将数据包发出去
4、关闭资源    */
class UdpSend
{
 	public static void main(String[] args) throws Exception
 	{
 		
//public DatagramSocket(int port) throws SocketException 创建数据报套接字并将其绑定到本地主机上的指定端口。
//1、创建UDP服务,通过DatagramSocket对象
 		DatagramSocket dgs = new DatagramSocket(8900);
 		//2、确定数据,并封装成数据包
 		// DatagramPacket(byte[] buf,int length,InetAddress address,int port)
 		byte[] buf = "akdlasf".getBytes();
 		DatagramPacket dgp = 
new DatagramPacket(buf,buf.length,InetAddress.getByName("localHost"),10000);
 		//3、通过Socket的发送功能,将数据包发送出去 send()
 		dgs.send(dgp);
 		dgs.close();
 	}


 

/*实例:定义一个应用程序,用于接收UDP协议传输的数据并进行处理
思路:
1、定义udpSocket服务,通常会监听一个端口,其实就是给这个接收网络应用程序
定义数字标识,方便明确哪些数据过来该应用程序可以处理
2、定义一个数据包,用于存储接收到的字节数据。
数据包对象中有很多功能可以提取字节数据中的不同数据信息
3、通过Sockt服务的receive()方法将接收到的数据存入到已定义好的数据包中
4、通过数据包对象特有的功能,将这些不同的数据取出,打印在控制台上
5、关闭资源*/
class UdpReceive
{
	public static void main(String[] args) throws Exception
	{
		//、创建UDP Socket服务,建立端点
		DatagramSocket dgs = new DatagramSocket(10000);
		//2、定义数据包,用于存储数据
		// DatagramPacket(byte[] buf,int length)
		byte[] buf = new byte[1024];
		DatagramPacket dgp = new DatagramPacket(buf,buf.length);
		//3、通过receive()方法,将收到的数据存入到数据包中
		dgs.receive(dgp);
		//4、通过数据包的方法获取其中的数据
		String ip = dgp.getAddress().getHostAddress();
		String data = new String(dgp.getData(),0,dgp.getLength());
		int port = dgp.getPort();
		System.out.println(ip + data + port);
		dgs.close();
	}
}


 

/*通过使用多线程创建聊天小程序*/

Tcp

1、Tcp分客户端和服务端

2、客户端对应的对象是Socket

服务端对应的对象是ServerSocket

客户端:

Tcp是面向连接的,因此在建立Socket服务时,就要有服务端存在,并连接成功

形成通路后,在该通道进行数据的传输。Socket对象在建立时,就可以去连接指定主机

/*实例:给服务端发送一个文本数据,并接受服务端的信息反馈
步骤:
1、建立Socket服务,指定要连接的目的主机和端口
  2、获取Socket流中的输出流,将数据写到该流中,通过网络发送给fuwd
  3、获取Socket流中的输入流,将服务端反馈的数据获取到,并打印
  3、关闭客户端资源*/
public static void main(String[] args) throws Exception
{
//1、创建客户端的Socket服务,指定目的主机和端口
	Socket s = new Socket("localhost",10009);
	//2、为了发送数据,应该获取Socket流中的输出流
	OutputStream os = s.getOutputStream();
	os.write("服务端你好".getBytes());
	
	InputStream is = s.getInputStream();
	byte[] buf = new byte[1024];
	int len = is.read(buf);
	System.out.println(new String(buf,0,len));
	
	s.close();
}


URL

String getFile()   //获取此 URL 的文件名。 
String getHost()    //获取此 URL 的主机名(如果适用)。 
String getPath()    //获取此 URL 的路径部分。 
int getPort()    		//获取此 URL 的端口号。 
String getProtocol()   //获取此 URL 的协议名称。 
String getQuery()      //获取此 URL 的查询部分。 


URLConnection

URL url = new URL("http://127.0.0.1:8080/myweb/demo.html");
URLConnection urlConn = url.openConnection();
InputStream inStream = urlConn.getInputStream();
byte[] buf = new byte[1024];
int len =inStream.read(buf);
System.out.println(new String(buf,0,len));


域名解析

---------------------- Android开发java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值