黑马程序员——网络编程概述
2013-11-07 15:04
309 查看
----------------------------android培训
java培训 期待与您交流! ------------------------
网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。
网络编程步骤如下:
客户端(Client)是指网络编程中首先发起连接的程序,客户端一般实现程序界面和基本逻辑实现,在进行实际的客户端编程时,无论客户端复杂还是简单,以及客户端实现的方式,客户端的编程主要由三个步骤实现:
1、 建立网络连接 客户端网络编程的第一步都是建立网络连接。在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了。
2、 交换数据 连接建立以后,就可以通过这个连接交换数据了。交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。
3、 关闭网络连接。
服务器端(Server)是指在网络编程中被动等待连接的程序,服务器端一般实现程序的核心逻辑以及数据存储等核心功能。服务器端的编程步骤和客户端不同,是由四个步骤实现,依次是:
1、 监听端口 服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。 这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。 2、 获得连接 当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP地址等等,服务器端和客户端也通过该连接进行数据交换。 一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。
3、 交换数据 服务器端通过获得的连接进行数据交换。服务器端的数据交换步骤是首先接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。简单来说,就是先接收再发送,这个和客户端的数据交换数序不同。 其实,服务器端获得的连接和客户端连接是一样的,只是数据交换的步骤不同。 当然,服务器端的数据交换也是可以多次进行的。 在数据交换完成以后,关闭和客户端的连接。
4、 关闭连接
网络通讯的方式主要有TCP方式和UDP方式两种方式 。在网络通讯中,TCP方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据。而UDP方式就类似于发送短信,使用这种方式进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。
TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。因此TCP保证数据正确性,UDP可能丢包
TCP保证数据顺序,UDP不保证
以下程序代码可以帮助理解
tcp协议编程代码如下:
udp协议编程代码如下:
java培训 期待与您交流! ------------------------
网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。
网络编程步骤如下:
客户端(Client)是指网络编程中首先发起连接的程序,客户端一般实现程序界面和基本逻辑实现,在进行实际的客户端编程时,无论客户端复杂还是简单,以及客户端实现的方式,客户端的编程主要由三个步骤实现:
1、 建立网络连接 客户端网络编程的第一步都是建立网络连接。在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了。
2、 交换数据 连接建立以后,就可以通过这个连接交换数据了。交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。
3、 关闭网络连接。
服务器端(Server)是指在网络编程中被动等待连接的程序,服务器端一般实现程序的核心逻辑以及数据存储等核心功能。服务器端的编程步骤和客户端不同,是由四个步骤实现,依次是:
1、 监听端口 服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。 这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。 2、 获得连接 当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP地址等等,服务器端和客户端也通过该连接进行数据交换。 一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。
3、 交换数据 服务器端通过获得的连接进行数据交换。服务器端的数据交换步骤是首先接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。简单来说,就是先接收再发送,这个和客户端的数据交换数序不同。 其实,服务器端获得的连接和客户端连接是一样的,只是数据交换的步骤不同。 当然,服务器端的数据交换也是可以多次进行的。 在数据交换完成以后,关闭和客户端的连接。
4、 关闭连接
网络通讯的方式主要有TCP方式和UDP方式两种方式 。在网络通讯中,TCP方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据。而UDP方式就类似于发送短信,使用这种方式进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。
TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。因此TCP保证数据正确性,UDP可能丢包
TCP保证数据顺序,UDP不保证
以下程序代码可以帮助理解
tcp协议编程代码如下:
import java.io.*; import java.net.*; class tcpClient{ public static void main(String[] args) throws Exception{ //创建客户端的socket服务。指定目的主机和端口 Socket s=new Socket("127.0.0.1",10001); //为了发送数据,应该获取socket流中的输出流。 OutputStream out=s.getOutputStream(); out.write("wo lai le ni hao tcp".getBytes()); s.close();//关闭连接 } } class tcpServer{ public static void main(String[] args) throws Exception{ //建立服务端socket服务。并监听一个端口。 ServerSocket ss=new ServerSocket(10001); //通过accept方法获取连接过来的客户端对象。 while(true){ Socket s=ss.accept(); String ip=s.getInetAddress().getHostAddress(); //获取客户端发送过来的数据,那么要使用客户端对象的读取流来读取数据。 InputStream in=s.getInputStream(); byte[] buf=new byte[1024]; int len =in.read(buf); System.out.println(ip+":::"+new String(buf,0,len)); s.close();//关闭连接 } } }
udp协议编程代码如下:
import java.io.*; import java.net.*; class udpSend { public static void main(String[] args) throws Exception { //创建udp服务,通过DatagramSocket对象 DatagramSocket ds =new DatagramSocket(8888); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String line=null; //确定数据,并封装成数据包 while((line=br.readLine())!=null){ byte[] buf=line.getBytes(); DatagramPacket dp= new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10002); ds.send(dp); } ds.close();//关闭连接 } } class udpRece{ public static void main(String[] args) throws Exception { DatagramSocket ds =new DatagramSocket(10002); while(true){ //定义数据包 byte[] buf=new byte[1024]; DatagramPacket dp=new DatagramPacket(buf,buf.length); //通过服务的receeive方法将收到数据存入数据包中 ds.receive(dp); //通过数据包的方法获取其中的数据 String ip=dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); System.out.println(ip+" "+data); } //关闭连接 //ds.close(); } }
相关文章推荐
- 黑马程序员——>第二十三天<网络编程(概述-UDP-TCP)>
- 黑马程序员——网络编程——网络编程概述,UDP协议,TCP协议
- 黑马程序员——网络编程(一)--概述、UDP网络程序
- 黑马程序员—网络编程概述
- 黑马程序员 网络编程
- JAVA基础再回首(二十八)——网络编程概述、IP地址、端口号、TCP和UDP协议、Socket、UDP传输、多线程UDP聊天
- 黑马程序员——Java概述之JDK安装攻略
- 黑马程序员——数组概述+数组排序+数组查找-第5天
- 黑马程序员——第23天——网络编程()
- 黑马程序员--java概述
- 黑马程序员——正则表达式1:概述
- 黑马程序员——Java基础——网络编程(下)之TCP
- 黑马程序员——学习日记之Java基础概述
- 黑马程序员——网络编程之CTP传输
- 黑马程序员------面向对象(No.7)(内部类、异常概述、异常try-catch、异常声明throws、多异常处理)
- 黑马程序员———网络编程问题总结
- 黑马程序员--集合工具类、其他对象、IO流概述
- 黑马程序员————网络编程(day26)
- 黑马程序员-[OC语言] 第八篇:foundation框架之 NSFileManager、NSDate概述
- 黑马程序员--Java基础学习(网络编程)第二十四天