网络编程

网络编程基础:

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 地址
UDP:面向无连接

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

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

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

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

TCP:面向连接

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

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

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

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

Socket:

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

    2、通信的两端都有Socket

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

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

   public void connect(SocketAddress endpoint) throwsIOException将此套接字连接到服务器

/*实例:通过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));

域名解析

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值