网络

1.IP地址---InetAddress 
2.端口号:程序的唯一标识 
          有效端口号:0~~65535 
          保留端口号:0~~1024
3.通讯协议--通讯规则要一致。 
          UDP: 不需要建立连接。
              速度快 不安全。 
              传输数据小。 
              传输的是"数据报包"---64k内。 
          TCP
              需要3次握手建立连接。安全 传输大数据。速度慢。 
 ---------------------------------------
 * InetAddress,此类表示互联网协议 (IP) 地址。
 *         static InetAddress getLocalHost() 返回本地主机。
 *         String getHostName() 返回主机名称 
 *         String getHostAddress() 返回主机地址

 

TCP接收端/发送端

/**
	Tcp,需要建立链接--Socket
	发送端/客户端--Socket,此类实现客户端套接字(也可以就叫“套接字”)。
							套接字是两台机器间通信的端点。
	接收端/服务端--ServerSocket
	
 */
public class TcpSendDemo {
	public static void main(String[] args) throws Exception {
		//建立发送端套接字Socket
		//并且明确指定接收端地址以及程序端口号
		Socket s = new Socket("127.0.0.1", 9000);
		//获取管道输出流
		OutputStream out = s.getOutputStream();
		//发送数据
		out.write("tcp,这里是数据  ok !!".getBytes());
		
//		====接收服务端发来的反馈信息=================================================
		InputStream in = s.getInputStream();
		byte[] bys = new byte[1024];
		int len = in.read(bys);
		String msg = new String(bys,0,len);
		System.out.println("反馈信息-->"+msg);
		
		//关闭资源
		s.close();
	}
}
/**
 * tcp接收端/服务端--ServerSocket
 * 服务端获取不到流对象。
 * -----------------------------------
 * 需求:
 * 		客户端:读取文本文件
 * 				while  --readLine
 * 				发送到服务端
 * 
 * 				接收反馈信息。
 * 
 *		服务端:while接收数据--变成大写-->控制台
 *				反馈信息-->上传成功
 *
 		注意:别死锁了---文件结束标识。
 */
public class TcpReceiveDemo {
	public static void main(String[] args) throws Exception {
		//建立服务端套接字
		ServerSocket ss = new ServerSocket(9000);
		//获取访问客户端
		Socket s = ss.accept();
		//获取读取流,读取客户端发来的数据
		InputStream in = s.getInputStream();
		//数据缓冲区
		byte[] bys = new byte[1024];
		int len = in.read(bys);
		String data = new String(bys,0,len);
		
		System.out.println("数据-->"+data);
//		=======给客户端反馈信息===============================
		OutputStream out = s.getOutputStream();
		out.write("ok".getBytes());
		
		//关闭
//		ss.close();
	}
}

UDP接收端/发送端

/**
 * 网络数据传输--两端都要有Socket
 * Socket,套接字/邮局/快递公司/港口...
 * 
 * udp:发送的是"数据报包"--DatagramPacket
 * 	发送端:DatagramSocket
 *  接收端:DatagramSocket
 */
public class UdpSendDemo {
	public static void main(String[] args) throws Exception {
		//建立发送端Socket
		DatagramSocket ds = new DatagramSocket();
		//数据
		byte[] buf = "udp,你爹 lai le !!".getBytes();
		//封装"数据报包"
		DatagramPacket dp = new DatagramPacket(buf, buf.length, 
				InetAddress.getByName("127.0.0.1"), 
				8000) ;
		//发送"数据报包"
		ds.send(dp);	
		//关闭
		ds.close();
	}
}
public class UdpReceiveDemo {
	public static void main(String[] args) throws Exception {
		//建立接收端套接字DatagramSocket,并且监听端口号:8000
		DatagramSocket ds = new DatagramSocket(8000);
		//空间
		byte[] buf = new byte[1024];
		//封装"数据报包",用来存放数据
		DatagramPacket dp = new DatagramPacket(buf, buf.length);
		//接收数据到--"数据报包"
		ds.receive(dp);
		//解析数据
		//获取发送端InetAddress
		InetAddress inet = dp.getAddress();
		String ip = inet.getHostAddress();
		System.out.println("发送端地址--->"+ip);
		//真正的数据
		String data = new String(dp.getData(),0,dp.getLength());
		System.out.println("真正的数据-->"+data);
		
		ds.close();
		
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值