精华内容
下载资源
问答
  • pythonTCP协议

    2017-12-17 22:53:35
    SYN:同步-建立连接请求 ACK:回复应答 一、三次握手与listen和accept的关系(建立连接)  客户段connect发起三次链接  1.调用listen之后的套接字变成被动套接字 才能够收到客户的三次请求  队列:先进先出 ...

        

        
    一、TCP 特点:
           1.面向连接(单连)
           2.数据可靠性
               发送应答机制
               超时重传
               错误校验
               流量控制和阻塞管理(自动匹配流量)
            3.流氏报文
            4.传输层协议
    区别:(udp)面向连接,有序传输,重发丢失包,舍弃重复包,无差错的数据传输
    缺点:没有边界(发俩个包,可能一个包接收)

    二、TCP客户端
    import socket
    1.创建socket套接字---->网络地址协议族、流时报文
    tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    2.拨号----->建立和远程服务器的连接
    ( 客户端client,服务器server)
    tcp_socket.connect(( “IP”,port ))


    3.发送、接收&&&&&&&&&
    发送函数send:
    区别udp.sendto函数,只有一个参数bytes
    类型数据
    data =  input(“”)
    tcp_socket.send(data.encode())

    接收函数recv:
    参数为收到最大字节数
    返回值就是bytes类型数据
    recv_data = tcp_socket.recv(4096)
    print(recv_data.decode())

    4.关闭

    tcp_socket.close()

    三、 TCP服务器

    主动套接字--默认
    listen是将主动套接字转换成被动套接字的函数(设置等待功能)
    accept就是从等待中接通

    import socket
    1.创建套接字(总机)---->服务器套接字
    sever_socket = socket.socket(socket.AF_INET ,socket.SOCK_STREAM)


    2.绑定端口号
    sever_socket.bind(("",10086))

    3.安装一个服务器系统(设置被动套接字等待区域)(收到客户端连接请求)
    listen函数:
    参数为:最大容纳值
    server_socket.listen(128)

    4.从等待服务区内取出一个客户,使用分机服务.
    accept函数:
    1.参数:没有
    2.返回值:客户端套接字(分机),客户端地址元组(“ip”,端口)(客户信息)
    client_socket,client_addr= sever_socket.accept()
    print("接受的到来自%s的连接请求"%str(client_addr))

    5.服务器使用分机跟客户共同交流
    recv函数:
    while True:
    返回值正常情况下为收到数据,不正常情况下,客户端断开连接的时候 recv会接收0字节的byetes数据.所以需要加入if判断
    data = client_socket.recv(4096)
    client_socket.send(data.decode("gbk").encode())

    6.关闭分机
    client_socket.close()

    7.挂掉主机
    重要注意点:

    1. 服务器需要绑定
    2. 客户端不需要绑定
    3. 服务器通过listen修改主动套接字为被动(设置等待区域)
    4. 客户端需要用connect去连接服务器
    5. 服务器收到客户端的连接请求成功会新建一个client_socket
    6. accept返回建立新的套接字,标识新的客户端
    7. 关闭listen,意味着被动套接字关闭了,新的无法再连接
    8. 关闭accept,返回的套接字意味着客户端服务结束
    9. 客户端调用close,服务器端recv解阻塞,会接收0字节数据。因此服务器可以通过接收数据大小判断客户端是否下线




















    展开全文
  • # 导入socket库: import socket # 创建一个socket: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立连接: s.connect(('www.sina.com.cn', 80)) # 发送数据: ...
    # 导入socket库:
    import socket
    
    # 创建一个socket:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 建立连接:
    s.connect(('www.sina.com.cn', 80))
    # 发送数据:
    s.send(b'GET / HTTP/1.1\r\nHost: www.sina.com.cn\r\nConnection: close\r\n\r\n')
    # 接收数据:
    buffer = []
    while True:
        # 每次最多接收1k字节:
        d = s.recv(1024)
        if d:
            buffer.append(d)
        else:
            break
    data = b''.join(buffer)
    # 关闭连接:
    s.close()
    
    header, html = data.split(b'\r\n\r\n', 1)
    print(header.decode('utf-8'))
    # 把接收的数据写入文件:
    with open('sina.html', 'wb') as f:
        f.write(html)
    

     

    转载于:https://my.oschina.net/hellolcg/blog/1549792

    展开全文
  • python的HTTP请求方式(socket)

    千次阅读 2018-06-29 19:36:20
    建立TCP连接后发起http请求4. 服务器端响应http请求,浏览器得到html代码5. 浏览器解析html代码,并请求html代码中的资源6. 浏览器对页面进行渲染呈现给用户简化为:DNS解析(浏) ->TCP连接(三次握手)-&...
    关于pythonHTTP请求方式
    • HTTP请求步骤为
           1. 域名解析
    2. 发起TCP3次握手
    3. 建立TCP连接后发起http请求
    4. 服务器端响应http请求,浏览器得到html代码
    5. 浏览器解析html代码,并请求html代码中的资源
    6. 浏览器对页面进行渲染呈现给用户
    • 简化为
    DNS解析(浏) ->TCP连接(三次握手)->http Requests(浏)->Response(服) -> Parse(浏)-> Render(浏)->TCP断开(四次挥手)
    • SOCKET访问web http
    • import socket
      url = 'www.sina.com.cn'
      port = 80
      sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      sock.connect((url, port))
      request_url = 'GET / HTTP/1.1\r\nHost: www.sina.com.cn\r\nConnection: close\r\n\r\n'
      sock.send(request_url.encode())
      response = b''
      rec = sock.recv(1024)
      while rec:
          response += rec
          rec = sock.recv(1024)
      print(response.decode())


    • SOCKET访问https
    • import socket
      import ssl
      
      url = 'dps-precheck-h.camcard.com'
      port = 443
      sock = ssl.wrap_socket(socket.socket())
      sock.connect((url, port))
      request_url = 'GET /api/v1/block/block_info?id=dpsv45_9aeb8b0e953711e7af605254003cf65b HTTP/1.1\r\nHost: dps-precheck-h.camcard.com\r\nConnection: close\r\n\r\n'
      sock.send(request_url.encode())
      response = b''
      rec = sock.recv(1024)
      while rec:
          response += rec
          rec = sock.recv(1024)
      print(response.decode())


    • 模块举例
    Python中将这些步骤被封装成了完整的模块,直接调用即可进行。
    python3为例,类似模块有:urlliburllib3httplibrequests

     
    get
    post
    requests
    Data = requests.get(url)
    Data = requests.post(url,
    data =data)
    urllib
    f = urllib.request.urlopen
    (url)
    f.read().decode('utf-8')
    类似get,在urlopen加入post提交的data
    urllib3
    http=urllib3.PoolManager()
    r=http.request(
    ‘get’,
    url,
    fields={‘ ’:’ ’},
    headers={}
    )
    get变为post
    httplib2
    h = httplib2.Http()    
    head, content=h.request(url)
    request函数中加设置请求方式post,以及提交的表单
    pycurl
    c = pycurl.Curl()
    c.setopt(c.URL, url)
    b = StringIO.StringIO()
    c.setopt(c.WRITEFUNCTION, b.write)
    c.perform()  
    print b.getvalue()
    curl.setopt(pycurl.POSTFIELDS, urllib.urlencode(data))

    • 各模块的区别
    1. Python的urllib集合了python2的urllib和urllib2两个模块,解决了urllib不可伪装user Agent和urllib2无urlencode两个主要问题,功能齐全
    2. Urllib3是在urllib基础上集成第三方库,提供了:线程安全,连接池等新的特性
    3. Requests:是使用最广泛的,使用最简单,功能全面
    4. Httplib2实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现
    • 相关参考文章:

    展开全文
  • 在双方“握手”之后,TCP将在两个应用程序之间建立一个全双工(full-duplex)的通信。 这个全双工的通信将占用两个计算机之间的通信路线,直到它被一方或双方关闭为止。 三次握手 初版,四次握手 进化,三次握手 ...
    TCP协议介绍

    当应用程序希望通过TCP与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP将在两个应用程序之间建立一个全双工(full-duplex)的通信。

    这个全双工的通信将占用两个计算机之间的通信路线,直到它被一方或双方关闭为止。

    三次握手

    • 初版,四次握手
      在这里插入图片描述
    • 进化,三次握手
      在这里插入图片描述
      数据传输
      在这里插入图片描述
      四次挥手
      在这里插入图片描述
    TCP特点
    • 面向连接
      TCP采用发送应答机制
      超时重传
      错误校验
      流量控制和阻塞管理
    • 可靠传输
    UDP协议介绍

    当应用程序希望通过UDP与一个应用程序通信时,传输数据之前源端和终端不建立连接。
    当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。
    在这里插入图片描述

    TCP与UDP区别
    • TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接。
    • TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
    • UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
    • 每一条TCP连接只能是点到点的:UDP支付一对一,一对多和多对一和多对多的交互通信。
    • TCP对系统资源要求较多,UDP对系统资源要求较少。
    UDP通信

    在这里插入图片描述

    TCP通信

    在这里插入图片描述

    TCP客户端构建流程
    • 1.创建socket
    • 2.链接服务器
    • 3.接收数据
    • 4.关闭套接字
    import socket
    
    def main():
        tcp_client = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
    
        server_ip = input("server_ip:")
        server_port = int(input("server_port:")) 
        tcp_client.connect((server_ip, server_port))
    
        send_data = input("发送的数据:")
        tcp_client.send(send_data.encode())
    
        print(recv_data.decode("gbk")) 
    
        tcp_client.close()
    
    if __name__ == '__main__':
        main()
    
    TCP服务端
    • 1.socket创建套接字
    • 2.bind绑定IP和port
    • 3.listen使套接字变为可以被动链接
    • 4.accept等待客户端的链接
    • 5.recv/send接收发送数据
    import socket
    
    def main():
        tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
        tcp_server.bind(("192.168.20.216", 7890))
        
        tcp_server.listen(128)
    
        new_client_socket, client_addr = tcp_server.accept()
        
        recv_data = new_client_socket.recv(1024)
        print(recv_data.decode("gbk"))
        
        send_data = input("请输入你要发送给client的信息:")
        new_client_socket.send(send_data.encode("gbk"))
        
    if __name__ == '__main__':
        main()
    
    展开全文
  • Python TCP服务器

    2015-08-22 16:09:00
    TCP服务器的创建也比较简单; 1.建立一个socket对象 2.绑定要监听的IP地址和端口 3.当有客户端请求时,启动多线程处理客户端连接 import socket import threading bind_ip="127.0.0.1" bind_port=9999 #...
  • python TCP编程小试牛刀

    2016-08-03 21:24:14
    (1)首先建立一个TCP的socket (2)然后调用socket的方法与服务器进行连接 (3)连接之后给服务器发送一条HTTP请求 (4)接收服务器返回的HTTP响应(包括包头和HTML数据) (5)关闭连接,把接收到的数据打印或另存...
  • 需要建立2个文件,一个作为客户端,一个作为服务端 文件一 作为客户端client,文件二作为服务端server ...#2,建立连接发送连接请求 ip地址和端口号 s.connect(('127.0.0.1',8000)) s.send(你好.encode())
  • Python学习-TCP网络编程

    2020-08-22 10:10:43
    1.客户端 Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接...如果一切顺利,百度的服务器接受了我们的连接,一个TCP连接将会建立起来,然后进行数据通信,发送网页内容。 因此如果要
  • TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中,"打电话",而UDP类似于生活中的"发短信"。 TCP三次握手 首先Client(客户)端发送连接请求报文(第一次握手)。 .
  • wingIDE7 python2.7 写TCP客户端 import socket target_host = "www.baidu.com" target_port = 80 #建立socket对象 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #连接客户端 client.connect(...
  • 建立TCP连接用了多少时间? 客户端发送GET/POST请求数据到服务器用了多少时间? 服务器接收完客户端请求数据用了多少时间? 服务器接到请求后系统处理运行用了多少时间? 服务器系统处理完后发送回应数据到客户端用...
  • 目录一、Tcp协议二、Tcp 客户端简单实现循环发送请求三、Tcp服务端简单实现循环为多个客户端服务循环为多个客户端服务并且多次服务一个客户端四、试验 一、Tcp协议 ​ Tcp(Transmission Control Protocol) 传输控制...
  • 1.建立TCP服务器 ①创建TCPServer.py文件 ②编写服务器代码 1)创建socket对象,调用socket构造函数 2)绑定ip端口(IP号和端口号) 3)设置最大连接数(准备套接字,以便接受连接请求) 4)使用socket的...
  • 一个TCP连接必须要经过三次“对话”才能建立起来 三次对话 第一次对话 : 主机甲向主机乙发送连接请求数据包“我可以给你发数据吗” 第二次对话 : 主机乙向主机甲发送同意连接和要求同步(同步就是两台数据同时收发...
  • 2,建立套接字并经常IP地址捆绑,使用TCP协议进行通信。 3,接受客户端的请求并接受客户端发送过来的信息包; 4,将接受的信息发送出去与客户端进行交互。 import socket from time import ctime hostname = ...
  • 本文实例讲述了Python Socket实现简单TCP ...tcp连接中server部分,启动一个ip和port口,在这个port口监听,当收到client发来的请求,用一个新的端口port2同client建立连接。 socket启动监听的过程就是: 创建socket
  • socket编程(TCPTCP协议TCP协议介绍Client与Server建立连接Client与Server数据传输Client与Server断开连接TCP协议特点TCP通信TCP客户端(client)的实现TCP服务端(server)的实现优化TCP服务端文件下载器 TCP协议 TCP...
  • python socket编程(tcp粘包问题处理) 1.套接字工作流程 先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端...
  • 【Socket】Python UDP和TCP的socket实例

    千次阅读 2015-05-22 19:13:09
    [TOP]Socket又称”套接字”,应用程序通常通过”...而TCP是面向连接的,经过三次握手协议建立起连接,所以不用每次都指定目的地址端口。当然还有很多的区别,这里就不一一列举。一般服务器端和客户端各有一个socket,你
  • tcp三次握手和四次挥手 首先先介绍什么是传输层: ...首先Client(客户)端...Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 最初两端的TCP进程都处于CLOSED关闭状态...
  • 在双方“握手”之后,TCP将在两个应用程序之间建立一个全双工(full-duplex)的通信。 这个全双工的通信将占用两个计算机之间的通信路线,直到它被一方或双方关闭为止。 三次握手 数据传输 四次挥手 TCP...
  • 1、在TCP中,客户端的实现流程:(1)、创建客户端的socket对象 (2)、建立与服务器之间的联系 (3)、发送请求 (4)、接收数据 (5)、关闭连接 2、服务端的实现流程:(1)、创建服务端的socket对象 (2)...
  • tcp协议 传输特征: 提供可靠的传输服务: 可靠性表现:数据传输过程中,无失序,无差错,无重复,无丢失 传输过程中有建立和断开连接的过程 三次握手:建立数据传输两端的持续连接 1.客户端先服务器发起...
  • 在双方“握手”之后,TCP将在两个应用程序之间建立一个全双工(full-duplex)的通信。 这个全双工的通信将占用两个计算机之间的通信路线,直到它被一方或双方关闭为止。 三次握手 四次挥手 tcp的特点: 面向连接 ...
  • 一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个HTTP的响应给客户端,HTTP的响应内容同样...
  • 使用socketserver框架编写TCP服务器  Socketserver模块可以简化网络服务器的编写,它包含了四种服务器类,TCPServer使用TCP协议,UDPServer使用UDP... 使用服务器编程,需要进行一下步骤,先建立一个请求句柄类,
  • 2. 服务端 接到请求,双方建立连接 3. 客户端 向 服务端发消息 4. 服务端 应答客户端 5. 服务端 与客户端循环读写操作 6. 操作完成之后客户端发起关闭请求 一、客户端与服务端建立连接 客户端 import socket...
  • python网络编程(3)——TCP三次握手四次挥手TCP连接的建立(三次握手)TCP连接的释放(四次挥手)tcp长短连接tcp短连接tcp长连接TCP长/短连接的优点和缺点tcp/ip 协议OSI与TCP/IP协议的对应关系 TCP连接的建立(三次...
  • HTTP底层是基于 TCP 协议实现的, 导致浏览器和服务器之间传输资源之前需要建立连接 HTTP 协议是明文传输, HTTPS 是基于 HTTP 协议的安全通信方式< 密钥交互, 加密, 解密> web服务器: 提供网页 浏览器访问 web...
  • 是一个基于请求与相应,无状态,应用层协议,基于TCP/IP协议传输数据 什么是HTTPS 是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全通信,加密数据包 TCP/IP 模型 应用层 HTTP...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 181
精华内容 72
关键字:

python建立tcp请求

python 订阅