计算机网络自顶向下方法 第二章套接字编程作业 Web服务器 答案

https://github.com/jzplp/Computer-Network-A-Top-Down-Approach-Answer

#改为Python3格式
#import socket module
from socket import *
serverSocket = socket(AF_INET, SOCK_STREAM)
#Prepare a sever socket
serverPort = 80
serverSocket.bind(("", serverPort))
serverSocket.listen(1)
while True:
    #Establish the connection
    print('Ready to serve...')
    connectionSocket, addr = serverSocket.accept()
    try:
        message = connectionSocket.recv(1024)
        filename = message.split()[1]
        f = open(filename[1:])
        outputdata = f.read()
        f.close()
        #Send one HTTP header line into socket
        outputdata = 'HTTP/1.1 200 OK\r\n\r\n' + outputdata
        #Send the content of the requested file to the client
        for i in range(0, len(outputdata)):
            connectionSocket.send(outputdata[i].encode())
        connectionSocket.close()
        print("OK!")
    except IOError:
        #Send response message for file not found
        outputdata = 'HTTP/1.1 404 Not Found\r\n\r\n'
        #Close client socket
        for i in range(0, len(outputdata)):
            connectionSocket.send(outputdata[i].encode())
        connectionSocket.close()
serverSocket.close()
#改为Python3格式
#import socket module
from socket import *
import threading
def webProcess(connectionSocket):
    try:
        message = connectionSocket.recv(1024)
        filename = message.split()[1]
        f = open(filename[1:], "rb")
        outputdata = f.read()
        outputdata = outputdata.decode()
        f.close()
        #Send one HTTP header line into socket
        outputdata = 'HTTP/1.1 200 OK\r\n\r\n' + outputdata
        #Send the content of the requested file to the client
        for i in range(0, len(outputdata)):
            connectionSocket.send(outputdata[i].encode())
        connectionSocket.close()
        print("OK!")
    except IOError:
        #Send response message for file not found
        outputdata = 'HTTP/1.1 404 Not Found\r\n\r\n'
        #Close client socket
        for i in range(0, len(outputdata)):
            connectionSocket.send(outputdata[i].encode())
        connectionSocket.close()

serverSocket = socket(AF_INET, SOCK_STREAM)
#Prepare a sever socket
serverPort = 80
serverSocket.bind(("", serverPort))
serverSocket.listen(10)

while True:
    #Establish the connection
    print('Ready to serve...')
    connectionSocket, addr = serverSocket.accept()
    thread = threading.Thread(target = webProcess, args = (connectionSocket, ))
    thread.start()
serverSocket.close()
#Python3格式

from socket import *

serverName = '127.0.0.1'
serverPort = 80
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
outputdata = 'GET /hello.html HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n'
clientSocket.send(outputdata.encode())
data = 1
while data:
    data = clientSocket.recv(1024)
    print(data.decode(), end = '')
clientSocket.close()

 

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 5
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
引用:计算机网络 自顶向下方法第七版,是一本关于计算机网络的教材。它介绍了从应用层到物理层的计算机网络的各个方面,包括了网络协议、网络编程网络安全等内容。 根据这本教材的内容,计算机网络的实现可以从自顶向下方法来理解和分析。从应用层开始,通过各层之间的交互和协议来实现网络的功能和服务。首先,应用层负责处理用户的请求,生成合适的数据报文。下来,传输层通过建立可靠的连来传输数据。网络层负责选择合适的路线来传输数据。数据链路层和物理层则负责数据的实际传输。 引用:参考资料:https://baike.baidu.com/item/即时通讯软件/9556908 在计算机网络中,即时通讯软件如QQ和微信使用了不同的应用层协议和传输层协议。QQ使用了OICQ协议,并且使用了UDP作为传输层协议。微信则使用了HTTP作为应用层协议。这些即时通讯软件通过特定的端口号进行通信,比如QQ使用4000端口发送信息,8000端口收信息。 引用:参考资料:计算机网络 自顶向下方法第七版(P83) 在计算机网络中,UDP套和TCP套使用不同的标识段来识别报文段。UDP套使用目标IP地址和目标端口号作为标识段,而TCP套则使用源IP地址、源端口号、目标IP地址和目标端口号作为标识段。在收主机C中,通过源主机号来区别两个报文段。 综上所述,计算机网络 自顶向下方法第七版是一本关于计算机网络的教材,它介绍了网络的各个方面。即时通讯软件如QQ和微信使用了不同的协议和端口号进行通信。UDP套和TCP套使用不同的标识段来识别报文段。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漂流瓶jz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值