网络编程


网络编程

网络编程概述

网络编程就是将不同地理位置的计算机,通过IO流进行数据传递

一、网络模型

二、网络编程的三要素

1、IP地址(InetAddresss)

1、IP地址表示计算机在网络设备中的标识

2、不宜记忆,可以通过主机名来记

3、本机地址:127.0.0.1localhost

2、端口号

1、用于标识进行的逻辑地址

2、有效端口号:0--655360-1024为系统保留端口

3、传输协议

定义通讯的规则

三、IP地址

1、它是网络中的设备标识

2、不易记忆,可用主机名表示,两者存在映射关系

3、本机回环地址:127.0.0.1,主机名为:localhost。

IP地址:java中对应的是InetAddress类,存在于java.net包中。

IP地址分为5类:

A类   1.0.0.0 到126.0.0.0

0.0.0.0 和127.0.0.0保留

B类   128.1.0.0到191.254.0.0

C类   192.0.1.0 到223.255.254.0

D类   224.0.0.0到239.255.255.255用于多点广播

E类   240.0.0.0到255.255.255.254保留

255.255.255.255用于广播


InetAddress类

importjava.net.*;  
class  IPDemo{  
    publicstatic void main(String[] args) throws UnknownHostException{  
        //通过名称(ip字符串or主机名)来获取一个ip对象。  
        InetAddress ip =InetAddress.getByName("www.baidu.com");
        System.out.println("addr:"+ip.getHostAddress());  
        System.out.println("name:"+ip.getHostName());  
    }  
} 

四、网络编程UDP—TCP

UDP的特点:(面向无连接)

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

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

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

4、无连接,速度快

TCP特点:(面向连接)

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

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

3、要经过三次捂手完成连接,是可靠协议

4、需要建立连接,速度慢


五、Socket(Socket也称套接字)

1、Socket是为网络通信提供的一种机制

2、通信的两端都有Socket

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

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

通信的步骤:

1,找到IP地址

2,数据要发送到对象指定应用程序,为标识这些应用程序,所以给这些网络应用程序都用数字标识,为方便称呼这个数字,叫做端口,即逻辑端口。

3,定义通信规则,称之为协议。国际组织定义了通用协议,即TCP/IP。

注意:必须要有数字标识(端口号)才能将数据发送到应用程序上。


UDP发送和接收端

UDP发送端

/*
 * UDP发送数据
 */
/*
 * 1、创建发送端Socket对象
 * 		new DatagramSocket对象
 * 2、将数据进行打包
 * 		new DatagramPacket
 * 3、发送数据
 * 		send
 * 4、关闭资源
 * 		close
 */
public class UDPSocket {
	public static void main(String args[]) throws IOException{
		//创建UDP发送端Socket对象
		DatagramSocket ds=new DatagramSocket();
		String str="你好";
		//因为数据打包,打包的是字节,所以讲字符串进行转换
		byte [] b=str.getBytes();
		//获取数据的长度
		int len=b.length;
		//封装目的地
		InetAddress id=InetAddress.getByName("192.168.24.49");
		//封装端口号
		int port=8080;
		//将数据,目的地,端口进行封装
		DatagramPacket dp=new DatagramPacket(b,len,id,port);
		//发送数据
		ds.send(dp);
		ds.close();
	}
}

UDP接收端

/*
 * 接收端
 */
/*
 * 1、创建UDPSocket对象,并制定端口号
 * 		new DatagramSocket(端口号)
 * 2、创建接收端数据包,进行拆包
 * 		new DatagramPacket
 * 3、接受数据
 * 		receive
 * 4、关闭资源
 * 
 */
public class UDPReceive {
	public static void main(String [] args) throws IOException{
		//创建UDPSocket对象
		DatagramSocket ds=new DatagramSocket(8080);
		//定义数据包,接受数据,进行拆包
		while(true){
			byte [] b=new byte[1024];
			DatagramPacket dp=new DatagramPacket(b,b.length);
			//接受数据
			ds.receive(dp);
			String ip=dp.getAddress().getHostAddress();
			String data=new String (dp.getData(),0,dp.getLength());
			int port=dp.getPort();
			System.out.println(ip+":"+data+":"+port);
		}
	}
}


TCP发送和接收端

TCP发送端

/*
 * TCP发送端
 */
/*
 * 1、创建发送端Socket对象,并建立连接
 * 2、创建字节写入流对象
 * 3、写入数据
 * 4、关闭资源
 */
public class ClientTCP {
	public static void main(String args[]) throws IOException{
		//创建发送端Socket对象
		Socket s=new Socket("192.168.24.43",10086);
		//创建写入流对象
		OutputStream os=s.getOutputStream();
		//写入数据
		os.write("你好,我来了".getBytes());
		//关闭资源
		os.close();
	}
}

TCP服务端

/*
 * TCP服务端
 */
/*
 * 1、创建服务端Socket对象
 * 		new ServerSocet()
 * 2、创建Socket对象用来监听接受端
 * 		accept()
 * 3、创建读取流,并获取数据
 * 		getInputStream()
 * 4、关闭资源
 */
public class ServerTCP {
	public static void main(String [] args) throws IOException{
		//创建服务端Socket对象
		ServerSocket ss=new ServerSocket(10086);
		//创建Socket对象,来监听接受端
		Socket s=ss.accept();
		//创建读取流对象getInputStream
		InputStream is=s.getInputStream();
		//定义一个字节数组用来读取数据
		byte [] b=new byte[1024];
		int len=is.read(b);
		String str=new String(b,0,len);
		System.out.println(str);
		s.close();
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值