黑马程序员——网络编程
2015-07-17 13:37
453 查看
---------------Android培训、java培训、期待与您交流---------------
网络编程
网络编程概述网络编程就是将不同地理位置的计算机,通过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(); } }
相关文章推荐
- TCP 三次握手和四次挥手协议
- windows挂载linux网络文件系统NFS
- 关于网络中的内网IP地址和公网IP地址
- Network:UDP广播消息的测试
- 使用pb的connection对象建立TCP连接
- Dart网络编程-备忘录2.0
- lua https request 调用
- linux socket 阻塞式 TCP
- LINUX select socket编程 TCP
- HttpSession
- GCDAsyncSocket类库,IOS下TCP通讯使用心得
- HTTP报文
- 【光子远程控制】photon UDP/TCP+IOCP+RPC+去中心化设计(降低被爆菊几率)
- HttpClient_4 用法 由HttpClient_3 升级到 HttpClient_4 必看
- HttpUtility.UrlEncode,Server.UrlEncode 的区别
- 从HttpClient3迁移到HttpClient4
- HttpUtility.UrlEncode 方法 (String) 对 URL 字符串进行编码 NET Framework 4.6 and 4.5
- 用Tomcat服务器配置https双向认证过程实战
- hdu 1565 网络流(EK算法)
- UI1_HTTP下载