[黑马程序员]第十篇:网络编程
来源:互联网 发布:淘宝店铺全屏代码设置 编辑:程序博客网 时间:2024/05/01 17:58
网络协议
TCP协议和UDP协议是比较常用的网络协议,两者同为网络协议,是一种数据交换的规则和标准
TCP协议:TCP是一种面向连接(连接导向)的、可靠的、基于字节流的基于传输层的通信协议,是一个较安全的通信协议。在建立通信时,需要在客户端和服务端建立安全套接字(socket),建立连接后双方可以双向数据传输,双方都可作为发送发和接收方。
UDP协议:UDP是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址和目的地址。能在网上以任何的路径发往目的地,所以能否发送至目的地,以及内容的正确性都是不能保证的。
URL(统一资源定位器):它表示在internet上某一资源的地址,通过URL我们可以访问该网络资源。URL的组成是有格式的:protocol://resourceName。例如:http://www.baidu.com
socket 通信
使用Socket进行Client/Server程序设计的一般连接过程是这样的:Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信。
对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤:
(1) 创建Socket;
(2) 打开连接到Socket的输入/出流;
(3) 按照一定的协议对Socket进行读/写操作;
(4) 关闭Socket
创建socket
其中address 和 port 分别是创建套接字的ip地址以及端口号
下面我们来看看一个简单的socket程序
客户端程序:
import java.io.*; import java.net.*; public class TalkClient { public static void main(String args[]) { try{ Socket socket=new Socket("127.0.0.1",4700); //向本机的4700端口发出客户请求 BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); //由系统标准输入设备构造BufferedReader对象 PrintWriter os=new PrintWriter(socket.getOutputStream()); //由Socket对象得到输出流,并构造PrintWriter对象 BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); //由Socket对象得到输入流,并构造相应的BufferedReader对象 String readline; readline=sin.readLine(); //从系统标准输入读入一字符串 while(!readline.equals("bye")){ //若从标准输入读入的字符串为 "bye"则停止循环 os.println(readline); //将从系统标准输入读入的字符串输出到Server os.flush(); //刷新输出流,使Server马上收到该字符串 System.out.println("Client:"+readline); //在系统标准输出上打印读入的字符串 System.out.println("Server:"+is.readLine()); //从Server读入一字符串,并打印到标准输出上 readline=sin.readLine(); //从系统标准输入读入一字符串 } //继续循环 os.close(); //关闭Socket输出流 is.close(); //关闭Socket输入流 socket.close(); //关闭Socket }catch(Exception e) { System.out.println("Error"+e); //出错,则打印出错信息 } }}
服务端程序:
import java.io.*; import java.net.*; import java.applet.Applet; public class TalkServer{ public static void main(String args[]) { try{ ServerSocket server=null; try{ server=new ServerSocket(4700); //创建一个ServerSocket在端口4700监听客户请求 }catch(Exception e) { System.out.println("can not listen to:"+e); //出错,打印出错信息 } Socket socket=null; try{ socket=server.accept(); //使用accept()阻塞等待客户请求,有客户 //请求到来则产生一个Socket对象,并继续执行 }catch(Exception e) { System.out.println("Error."+e); //出错,打印出错信息 } String line; BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); //由Socket对象得到输入流,并构造相应的BufferedReader对象 PrintWriter os=newPrintWriter(socket.getOutputStream()); //由Socket对象得到输出流,并构造PrintWriter对象 BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); //由系统标准输入设备构造BufferedReader对象 System.out.println("Client:"+is.readLine()); //在标准输出上打印从客户端读入的字符串 line=sin.readLine(); //从标准输入读入一字符串 while(!line.equals("bye")){ //如果该字符串为 "bye",则停止循环 os.println(line); //向客户端输出该字符串 os.flush(); //刷新输出流,使Client马上收到该字符串 System.out.println("Server:"+line); //在系统标准输出上打印读入的字符串 System.out.println("Client:"+is.readLine()); //从Client读入一字符串,并打印到标准输出上 line=sin.readLine(); //从系统标准输入读入一字符串 } //继续循环 os.close(); //关闭Socket输出流 is.close(); //关闭Socket输入流 socket.close(); //关闭Socket server.close(); //关闭ServerSocket }catch(Exception e){ System.out.println("Error:"+e); //出错,打印出错信息 } } }
- [黑马程序员]第十篇:网络编程
- 【黑马程序员】第十章:网络编程
- 黑马程序员——Java 网络编程 (第十一篇)
- 黑马程序员-网络编程篇
- 【黑马程序员】网络编程
- 黑马程序员 网络编程
- 黑马程序员:网络编程
- 黑马程序员-------网络编程
- 黑马程序员-网络编程
- 黑马程序员:网络编程
- 黑马程序员--网络编程
- 黑马程序员--网络编程
- 黑马程序员-网络编程
- 黑马程序员-------网络编程
- 黑马程序员-网络编程
- 黑马程序员-----网络编程
- 黑马程序员-网络编程
- 黑马程序员-网络编程
- mysql文件空间占用真的
- Ubuntu下配置Tomcat教程
- 黑马程序员----网络编程TCP协议聊天
- CPU常见故障及处理方法-奇9计算机基础知识网
- 搜狗实验室文本分类语料库
- [黑马程序员]第十篇:网络编程
- vlookup 的#N/A(4)
- INI文件格式及其读写
- django模板:在子模板使用block引入CSS文件
- oracle中 connect by prior
- ASP.net 网站部署
- 在Cookie被禁用的情况下使用url rewrite机制保持Session
- 计算机科学概论(第11版) 1.3节 问题与练习答案
- JAVA线程池例子