分布式计算学习笔记之二:Socket通讯与HTTP服务器

来源:互联网 发布:数据采集卡ni 编辑:程序博客网 时间:2024/05/17 23:46

1.

应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

传输层的功能包括选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。

网络层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式,还定义了如何将一个包分解成更小的包的分段方法。

 

 

2.

传输层。不同的端口号可以区分不同的数据来源,便于管理。不同的端口号有着不同的用途,例如TCP21端口是FTP文件传输服务端口。

 

3.

存在一定的相似性,但本质不同。

 

4.

不相同。连接Socket用于监听其他客户程序的连接请求,数据Socket用于与客户数据连接。有些端口号是保留的,作为编程者,一般只定义4位数的端口号。

 

5.文档中提到工厂方法。请用 UML 图画出 InetAddress Inet4AddressInet3Address三者关系。

 

 

 

 

6.

(1)侦听并等待连接

ServerSocket listenSocket = new ServerSocket(Integer.parseInt(args[0]));

Socket socket = listenSocket.accept();

(2)请求连接

Socket socket = new Socket(args[0], Integer.parseInt(args[1]));

(3)建立连接Socket

PrintWriter out = PrintWriter(socker.getOutputStream(), true);

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream());

(4)传送数据

String message;

while ((message = in.readLine()) != null)

{

out.println(message.toUpperCase());
}

(5)关闭连接

out.close();

in.close();

socket.close();

 

8.

Request For Comments(RFC);Internet Engineering Task ForceIETF);

RFC2616

http://www.cnblogs.com/k1988/archive/2010/01/12/2165683.html

 

9.

DaytimeServer侦听,一旦有连接建立,即MyStreamSocket获取到数据后,就返回ASCII形式的日期和时间。首先通过ServerSocket类的实例化产生流式Socket,并由MyStreamSocket类的实例对象的accept()方法监听客户端请求,等待客户端连接。当客户端收到请求后,由sendMessage()方法返回消息给客户端。

 

10.

Helper类通过getTimestamp()方法向服务端发送请求并接收响应信息。创建了MyStreamSocket类的实例对象mySocket,由实例对象的receiveMessage()方法接收服务端信息。

概而言之,xxHelper类负责与服务端的交互,包括发送请求以及接收信息。

 

11.

 

启动服务器,端口号为8080

第一个指令curl http://localhost:8080 不带参数

 

 

第二个指令 -o out

 

将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件

 

第三个指令 -u username

 

使用用户名和密码登陆。

 

 

参考资料:http://www.cnblogs.com/sunada2005/p/3829772.html

 

 

 

 

 

 

阅读课后完成设计实验 HTTP 学号尾数为奇数同学完成.pdf”

 

①目标是改进服务器为多线程服务器,将原来的代码划分为监听器和处理器;搭建了简单的框架,主要使用了工厂方法、模板方法、Facade、策略和责任链的设计模式来提高重用性。

 

HttpClientHelper,Handler

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

个人学习小结:

 

Http协议有了基础的了解。

熟悉了流式Socket

熟悉了简单的HttpServer的开发。

Daytime协议和工厂方法有所了解。

知道了如何提升服务器性能,例如多线程和简单框架。

0 0
原创粉丝点击