java学习笔记(11)--网络通信
来源:互联网 发布:教育统计软件安装 编辑:程序博客网 时间:2024/06/07 11:53
一、题目
1. 什么是TCP/IP协议?它有什么特点?
TCP/IP协议是一种基于连接的、稳定高效的网络通信协议。它具有稳定高效、收发信息明确的特点。
TCP/IP(传输控制协议/网间协议)是internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层).。TCP/IP协议具有免费开放性、应用广泛性、可靠性高等特点。
2. 简述URL与Socket通信的区别。
URL通信是利用标识符表示出确定的地址从而实现通信双方的确认;而Socket通信则是通过通信双方的IP和端口号来标识通信双方,从而达到通信双方的鉴别与确认。
URL功能较为高级,通过URL Java程序可以直接送出或读入网络上的数据.
Socket是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道。具体区别表现为:
(1)通信方式
Socket在服务器端运行通信程序,不停地监听客户端的连接请能够使通信发求,等待客户端请求服务当客户端提出请求时,马上连接并通信;
利用URL进行通信时,在服务器端常驻一个CGI程序,但它一直处于休眠状态。只有在客户端要求建立连接时才被激活,然后与用户进行通信。所以URL进行通信时,被动等待客户端的请求。
(2)连接数
Socket服务器可以同时与多个客户端进行相互通信
URL通信方式是服务器只能与一个客户端进行通信。
3. 简述Socket通信机制,说明客户端如何与服务器进行连接。
Socket通信机制就是服务器监听,客户端请求,连接确认与数据传输,释放连接。
建立连接的过程如下:
服务器端生成一个ServerSocket实例对象,随时监听客户端的连接请求
客户端生成一个Socket实例对象,并发出连接请求
服务器端通过accept()方法接收到客户端的请求后,开辟一个接口与之进行连接,并生成所需的I/O数据流
通信都是通过一对InputStream()和OutputStream()进行的。通信结束后,两端分别关闭对应的Socket接口
4. 说明并尝试通过URL连续从服务器上读取一个文本文件,并显示该文本文件的内容
package xiti11;import java.net.*;import java.io.*;public class xiti11_4 {public static void main(String args[]) throws Exception{ URL url = new URL("https://www.baidu.com/?tn=90066238_hao_pg");//URL URLConnection urlc = url.openConnection();//创建连接 //获取服务器端字节流并读取 BufferedReader in = new BufferedReader(new InputStreamReader(urlc.getInputStream())); String inputLine;//按行读取 while((inputLine=in.readLine())!=null) { System.out.println(inputLine);//输出 } in.close();//关闭文件连接}}
5. 编写程序,用Socket通信机制在服务器和客户端之间传输文件。
服务器:
package xiti11;
//Network_3,C/S通信服务器端,接收字符串并显示
import java.net.*;
import java.io.*;
public class xiti11_5_server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;PrintWriter out = null;BufferedReader in = null;try { serverSocket = new ServerSocket(80);} catch (IOException e) { System.err.println("Could not listen on port: 80."); System.exit(1);}Socket clientSocket = null;try { clientSocket = serverSocket.accept(); out = new PrintWriter(clientSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));} catch (IOException e) { System.err.println("Accept failed."); System.exit(1);}String fromUser;int strlen;while (true) { fromUser= in.readLine(); strlen=fromUser.length(); out.println("received string's length is: "+ strlen); System.out.println("Server: received string's length is: "+ strlen); if(fromUser.equalsIgnoreCase("Bye")) break;}out.close();in.close();clientSocket.close();serverSocket.close(); }}
客户端:
package xiti11;
//Network_3,C/S通信客户端,发送字符串
import java.io.*;
import java.net.*;
public class xiti11_5_Client {
public static void main(String[] args) throws IOException {
Socket echoSocket = null; PrintWriter out = null; BufferedReader in = null; try { echoSocket = new Socket("127.0.0.1", 80); out = new PrintWriter(echoSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader( echoSocket.getInputStream())); } catch (UnknownHostException e) { System.err.println("Don't know about host: taranis."); System.exit(1); } catch (IOException e) { System.err.println("Couldn't get I/O for " + "the connection to: taranis."); System.exit(1); }BufferedReader stdIn = new BufferedReader( new InputStreamReader(System.in));String userInput;while (true){ userInput = stdIn.readLine(); out.println(userInput); System.out.println("echo: " + in.readLine()); if(userInput.equalsIgnoreCase("Bye")) break;}out.close();in.close();stdIn.close();echoSocket.close(); }}
- java学习笔记(11)--网络通信
- 网络通信学习笔记-Java
- java学习笔记---Socket应用网络通信
- Java学习笔记(3)网络通信
- 通信网络学习笔记
- java 网络通信 笔记
- Java学习笔记04——Java网络通信
- Java网络编程学习笔记(4)非阻塞通信
- Java网络编程学习笔记(4)非阻塞通信
- Qt网络通信学习笔记
- Android网络通信--学习笔记
- Java网络通信编程学习
- java 网络 学习笔记
- JAVA学习笔记-----网络
- Python学习笔记(六)网络通信
- java socket通信学习笔记
- 【java学习】Java网络通信基石Socket
- Socket通信---网络通信学习笔记(一)
- 深入理解Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别
- mysql常用命令
- 如何关闭浏览器的HSTS功能
- 11月13日云栖精选夜读:阿里云中间件产品科技普惠企业,满足多场景需求
- angular学习
- java学习笔记(11)--网络通信
- 【JavaSE】作业练习1111
- SQL 将查询结果插入到新增表
- 块存储 Cinder磁盘加密方法 研究
- Linux Mysql 给用户授权
- HDU 1879 继续畅通工程
- UML类图(PHP)
- Spring学习笔记
- java调用浏览器执行搜索