标签:style blog color java os 使用 io 数据 ar
IP地址
1、IP地址的分类
A类1.0.0.0到126.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
局域网内的IP 192.168开头
本地回环地址:127.0.0.1。本机的IP地址,只要网卡工作正常,127.0.0.1
2、java.net.InetAddress
描述IP地址对象的类,没有构造方法
InetAddress类中的方法:
static InetAddress getLocalHost() 返回本机IP地址对象
String getHostName() 返回主机名
String getHostAddress() 返回主机对应的IP地址
static InetAdress getByName(String 主机名) 获取到的是主机名对应的IP地址
3、端口号
如果一个程序占用了一个端口,别的程序将不能使用这个端口了
0-65535:可使用的端口号
0-1024:系统的保留端口号
80:互联网访问的默认端口号
21:FTP上传端口号
3306:MySQL数据库的连接端口
1521:Oracle数据库的连接端口
1433:MS SQLServer数据库的连接端口
通讯协议
1、UDP协议
UDP协议的特点:
面向无连接
不安全,数据可能丢失
数据限制在64KB以内
速度快
适合做即使通讯,如:飞秋、qq、MSN
2、Socket服务
通讯工具,通信双方必须有Socket服务。将你的数据传递给Socket传输工具,将数据发送出去,接受者也是通过Socket工具
来接受发来的数据。
DategramPacket数据包对象
DategramSocket,UDP的通信工具,发送数据和接受数据
3、UDP发送端的操作
将数据封装成数据包DategramPacket DategramSocket(数组,数组长度,目的IP地址,接受方端口号)
建立通信工具DategramSocket对象
将数据包交给工具DategramSocket进行发送
关闭资源
1 import java.net.*; 2 public class UDPSend { 3 public static void main(String[] args)throws Exception { 4 5 byte[] bytes = "你好UDP".getBytes(); 6 //创建数据包对象 7 DatagramPacket dp = new 8 DatagramPacket(bytes, bytes.length, InetAddress.getByName("127.0.0.1"),8000); 9 //创建通信工具Socket服务,DataGramSocket 10 DatagramSocket ds = new DatagramSocket(10000); 11 //调用ds的send方法,传递数据包 12 ds.send(dp); 13 //关闭资源 14 ds.close(); 15 } 16 }
4、UDP的接受端的操作
建立数据包对象,接受发送的数据包
建立通信工具DategramSocket对象 DategramSocket(字节数组,长度)
将数据包交给工具DategramSocket进行接受 receive(数据包)
将数据包进行拆开
拆包:
将字节数组变成字符串
DategramPacket类中的方法getLength()发送的有效字节数
DategramPacket类中的方法getPort()发送方的端口号
DategramPacket类中的方法getAddress()获取发送方的IP地址对象InetAddress类型,
getHostAddress()用这个IP对象获取IP地址
关闭资源
1 import java.net.*; 2 public class UDPReceive { 3 public static void main(String[] args) throws Exception{ 4 byte[] bytes = new byte[10]; 5 //创建数据包 6 DatagramPacket dp = new DatagramPacket(bytes, bytes.length); 7 //建立通信工具,打开端口,监听一个端口 8 DatagramSocket ds = new DatagramSocket(8000); 9 //调用ds的receive(数据包) 10 ds.receive(dp);//接收的方法,线程等待效果 11 //获取有效字节数 12 int length = dp.getLength(); 13 //端口号 14 int port = dp.getPort(); 15 //发送的IP对象 16 String ip = dp.getAddress().getHostAddress(); 17 System.out.println(new String(bytes,0,length )+" "+ip+" "+port); 18 //关闭资源 19 ds.close(); 20 } 21 }
5、TCP的协议
TCP协议的特点:
面向连接
安全
适合大数据传输
三次握手,速度慢
适合做安全的数据传输,如:下载,在线视频
IO的数据传输都是字节流,通过Socket连接对象获取,不能自己创建
6、TCP的客户端的操作
创建连接对象Socket Socket("IP",端口号)
通过Socket对象获取字节输出流,将数据发送到服务器
通过Socket对象获取字节输入流,读取服务器发回的数据
关闭资源
1 import java.io.*; 2 import java.net.*; 3 public class FileClient { 4 public static void main(String[] args) throws Exception { 5 Socket s = new Socket("192.168.1.102",8100); 6 FileInputStream fis = new FileInputStream("e:\\2.jpg"); 7 OutputStream out= s.getOutputStream(); 8 int line=0; 9 byte[] bytes =new byte[1024]; 10 while((line=fis.read(bytes))!=-1){ 11 out.write(bytes,0,line); 12 } 13 // 结束标记 14 s.shutdownOutput(); 15 InputStream in = s.getInputStream(); 16 line= in.read(bytes); 17 System.out.println("服务器说:::"+new String(bytes,0,line)); 18 fis.close(); 19 s.close(); 20 } 21 }
7、TCP的服务器端的操作
建立服务器的连接对象SeverSocket
获取客户端的连接对象,知道那个客户端和服务器连接,SeverSocket类的方法accept
获取到了客户端的连接对象,可以从客户端的连接对象Socket获取对象
1 import java.io.*; 2 import java.net.*; 3 import java.util.*; 4 public class FileServer { 5 public static void main(String[] args)throws Exception { 6 ServerSocket ss = new ServerSocket(8100); 7 Socket s = ss.accept(); 8 InputStream in = s.getInputStream(); 9 File file = new File("d:\\a"); 10 if(!file.exists()) 11 file.mkdirs(); 12 String filename=System.currentTimeMillis()+ new Random().nextInt(100)+".jpg"; 13 FileOutputStream fos = new FileOutputStream(file+File.separator+filename); 14 int line=0; 15 byte[] bytes =new byte[1024*1000]; 16 while((line=in.read(bytes))!=-1){ 17 fos.write(bytes,0,line); 18 } 19 OutputStream out = s.getOutputStream(); 20 out.write("上传成功".getBytes()); 21 fos.close(); 22 s.close(); 23 ss.close(); 24 } 25 }
标签:style blog color java os 使用 io 数据 ar
原文地址:http://www.cnblogs.com/ezreal33/p/3933955.html