码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员_网络编程

时间:2014-08-25 01:07:33      阅读:273      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!