黑马程序员 网络编程1
2013-09-21 21:53
211 查看
------------------android培训、 java培训、期待与您交流!-------------------
网络编程1
网络编程的目的就是指直接或间接地通过网
4000
络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。
两类传输协议:TCP;UDP
1、 Udp(聊天)
将数据即源和目的封装在数据包中,不需要建立连接
每个数据包的大小现在在64k内
无需连接,是不可靠协议
不需要建立,是可靠协议。
2、 Tcp(下载)
建立连接,形成传输数据的通道
在连接中进行大数据量的传输
通过三次“握手”完成连接,是可靠协议
必须建立连接,效率会稍低
Socket是为网络服务提供的一种机制,通信的两端都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。
通过udp传输方式,将一段文字数据发送到本地主机
//运行结果:
127.0.0.1 : 你好!我是春哥 : 323
通过这样我们就可以写一个单向通信程序,加上线程即可实现双向通信
代码如下:
接收端:
运行结果:
127.0.0.1 : 你好,我是春哥 : 3235
h哈哈127.0.0.1 : fgdfgd : 3237
127.0.0.1 : yfuyfikiuloijl :3239
TCP传输
Socket和ServerSocket
建立客服端和服务器端
建立连接后,通过Socket的IO流进行数据的传输
关闭资源
同样,客服端于服务端是两个独立的应用程序。
URL专用于接收主机地址,端口,目录,协议等信息。其中的openConnection是应用层方法,内部封装了Socket对象。可以建立服务器,返回URLConnction对象,URLConnction对象的getInputstream方法能获取服务器资源,但不会含响应头信息,其中打算openStream方法直接开流。
------------------android培训、 java培训、期待与您交流!-------------------
网络编程1
网络编程的目的就是指直接或间接地通过网
4000
络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。
两类传输协议:TCP;UDP
1、 Udp(聊天)
将数据即源和目的封装在数据包中,不需要建立连接
每个数据包的大小现在在64k内
无需连接,是不可靠协议
不需要建立,是可靠协议。
2、 Tcp(下载)
建立连接,形成传输数据的通道
在连接中进行大数据量的传输
通过三次“握手”完成连接,是可靠协议
必须建立连接,效率会稍低
Socket是为网络服务提供的一种机制,通信的两端都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。
通过udp传输方式,将一段文字数据发送到本地主机
//发送端代码: package spr.internet; import java.io.IOException; import java.net.*; public class UdpSend { public static void main(String[] args) { DatagramSocket ds = null; try { //1/创建udp服务,通过DatagramSocket对象。 ds = new DatagramSocket(); } catch (SocketException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } //2、确定数据,并封装成数据包。 byte[] buf ="你好!我是春哥".getBytes(); DatagramPacket dp = null; try { dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("localhost"), 8080); } catch (UnknownHostException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } try { //3、通过socket服务,将已有数据包发送出去。通过send方法。 ds.send(dp); } catch (IOException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } //4、关闭资源 ds.close(); } }
//接收端代码: package spr.internet; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class UdpReceive{ public static void main(String[] args){ DatagramSocket ds = null; try { //1、创建udpsocket建立端点,监听一个端口 ds = new DatagramSocket(8080); } catch (SocketException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } //2、定义数据包用于存储数据 byte[] buf =newbyte[1024*1024]; DatagramPacket dp= new DatagramPacket(buf, buf.length); //3、通过服务的receive方法将接收到的数据存入数据包中 try { ds.receive(dp); } catch (IOException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } //4、通过数据包的方法获取其中数据。 String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); int port = dp.getPort(); System.out.println(ip+" :"+data+" : "+port); //5、关闭资源 ds.close(); } }
//运行结果:
127.0.0.1 : 你好!我是春哥 : 323
通过这样我们就可以写一个单向通信程序,加上线程即可实现双向通信
代码如下:
//发送端 package spr.internet; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.*; public class UdpSend { public static void main(String[] args) { DatagramSocket ds = null; try { //1/创建udp服务,通过DatagramSocket对象。 ds = new DatagramSocket(); } catch (SocketException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); String line = null; try { while((line=bufr.readLine())!=null){ if("886".equals(line)) break; //2、确定数据,并封装成数据包。 byte[] buf = line.getBytes(); DatagramPacket dp = null; try { dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("localhost"), 8080); } catch (UnknownHostException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } try { //3、通过socket服务,将已有数据包发送出去。通过send方法。 ds.send(dp); } catch (IOException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } } } catch (IOException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } //4、关闭资源 ds.close(); } }
接收端:
package spr.internet; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class UdpReceive{ public static void main(String[] args){ DatagramSocket ds = null; try { //1、创建udpsocket建立端点,监听一个端口 ds = new DatagramSocket(8080); } catch (SocketException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } while(true){ //2、定义数据包用于存储数据 byte[] buf =newbyte[1024*1024]; DatagramPacket dp= new DatagramPacket(buf, buf.length); //3、通过服务的receive方法将接收到的数据存入数据包中 try { ds.receive(dp); } catch (IOException e) { // TODO Auto-generatedcatch block e.printStackTrace(); } //4、通过数据包的方法获取其中数据。 String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); int port = dp.getPort(); System.out.println(ip+" :"+data+" : "+port); } } }
运行结果:
127.0.0.1 : 你好,我是春哥 : 3235
h哈哈127.0.0.1 : fgdfgd : 3237
127.0.0.1 : yfuyfikiuloijl :3239
TCP传输
Socket和ServerSocket
建立客服端和服务器端
建立连接后,通过Socket的IO流进行数据的传输
关闭资源
同样,客服端于服务端是两个独立的应用程序。
URL专用于接收主机地址,端口,目录,协议等信息。其中的openConnection是应用层方法,内部封装了Socket对象。可以建立服务器,返回URLConnction对象,URLConnction对象的getInputstream方法能获取服务器资源,但不会含响应头信息,其中打算openStream方法直接开流。
------------------android培训、 java培训、期待与您交流!-------------------
相关文章推荐
- 黑马程序员----网络编程
- 黑马程序员__网络编程
- 黑马程序员-----java基础十九(java之网络编程)
- 黑马程序员_网络编程2(Tcp练习,URL-URLConnection,网络知识,域名解析)
- 黑马程序员---------网络编程
- 黑马程序员-----网络编程
- 黑马程序员_网络编程之TCP
- 黑马程序员------网络编程复习笔记
- 黑马程序员-----网络编程1
- 黑马程序员--网络编程协议
- 黑马程序员-网络编程之TCP传输小总结
- 黑马程序员——java网络编程
- 黑马程序员--图形界面中的鼠标,键盘两个事件,做一个磁盘的文件列表,菜单,子菜单,模拟记事本。网络编程,TCP的通信协议的特点
- 黑马程序员——Java网络编程
- 黑马程序员-----网络编程
- 黑马程序员_网络编程(二)
- 黑马程序员————java中的网络编程
- 黑马程序员-java学习基础加强之网络编程
- 黑马程序员-java网络编程以及IO流的应用
- 黑马程序员_JAVA网络编程