• 11 python socket网络编程


     1 #客户端和服务端:
     2 大多数连接都是可靠的TCP连接。创建TCP连接时,
     3 主动发起连接的叫客户端,
     4 被动响应连接的叫服务器。
     5 
     6 ##关于端口
     7 端口号小于1024的是Internet标准服务的端口,例如SMTP服务是25端口,FTP服务是21端口,等等
     8 端口号大于1024的,可以任意使用。
     9 客户端要主动发起TCP连接,必须知道服务器的IP地址和端口号。
    10 作为服务器,提供什么样的服务,端口号就必须固定下来。
    11 
    12 ##关于发送数据怎么协调
    13 TCP连接创建的是双向通道,双方都可以同时给对方发数据。
    14 但是谁先发谁后发,怎么协调,要根据具体的协议来决定。
    15 例如,HTTP协议规定客户端必须先发请求给服务器,服务器收到后才发数据给客户端。
    16 
    17 ---------------------客户端----------------------------------
    18 
    19 # 导入socket库:
    20 import socket
    21 
    22 # 创建一个socket:
    23 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    ##AF_INET指定使用IPv4协议,如果要用更先进的IPv6,就指定为AF_INET6。SOCK_STREAM指定使用面向流的TCP协议
    24 # 建立连接:
    25 s.connect(('www.sina.com.cn', 80))   ##注意参数是一个tuple,包含地址和端口号。
    26 # 发送数据:
    27 s.send(b'GET / HTTP/1.1
    Host: www.sina.com.cn
    Connection: close
    
    ')  ##建立TCP连接后,我们就可以向新浪服务器发送请求,要求返回首页的内容:
    28 
    29 
    30 # 接收数据:
    31 buffer = []
    32 while True:
    33     # 每次最多接收1k字节:
    34     d = s.recv(1024)
    35     if d:
    36         buffer.append(d)
    37     else:
    38         break
    39 data = b''.join(buffer)    ##接收数据时,调用recv(max)方法,一次最多接收指定的字节数,因此,在一个while循环中反复接收,直到recv()返回空数据,表示接收完毕,退出循环。
    40 
    41 
    42 # 关闭连接:
    43 s.close()   ##当我们接收完数据后,调用close()方法关闭Socket,这样,一次完整的网络通信就结束了
    44 
    45 
    46 #接收到的数据包括HTTP头和网页本身,我们只需要把HTTP头和网页分离一下,把HTTP头打印出来,网页内容保存到文件
    47 header, html = data.split(b'
    
    ', 1)
    48 print(header.decode('utf-8'))
    49 # 把接收的数据写入文件:
    50 with open('sina.html', 'wb') as f:
    51     f.write(html)
    52 
    53 ##最后,现在,只需要在浏览器中打开这个sina.html文件,就可以看到新浪的首页了。
    54 
    55 -------------------------服务端----------------------------------------
  • 相关阅读:
    Node.js:工具模块
    Node.js:GET/POST请求
    shell之任务控制
    java实现杨辉三角系数
    java实现显示为树形
    java实现显示为树形
    java实现显示为树形
    java实现显示为树形
    java实现显示为树形
    java实现文件管理
  • 原文地址:https://www.cnblogs.com/2mei/p/9254234.html
Copyright © 2020-2023  润新知