• 网络编程 基础 基于socket的tcp和udp连接


    网络开发的框架

    • C/S B/S 架构

      • 程序都是bs架构的程序(b指浏览器,s指服务器)
      • c(client)是客户端,s(server)是服务器
      • bs架构是cs架构的一种
      • 未来的趋势,
        • pc端bs架构,统一了程序的入口
        • 手机端 微信公众号,统一了程序的入口
    • socket

      • 起一个tcp协议的socket进行通信

        • # tcp协议
          #客户端
          # import socket
          # rev = socket.socket()
          # # rev.bind(("ip地址",端口号))      #端口号一般取8000- 9999
          # rev.listen()            #开启服务端
          # 
          # msg,addr = rev.accept()     #三次握手过程,显示连接服务端的用户端地址
          # msg.send("你好".encode("utf-8"))  #给用户端发消息,需要进行编码
          # mv = msg.recv(1024)         #接受用户端回的消息,限制一次接受的最大字节
          # print(mv.decode("utf-8"))   #打印接受到的消息,需要解码
          # msg.close()                 #关闭用户端的连接
          # rev.close()                 #关闭服务端
          
          # 用户端
          # import socket
          # cli = socket.socket()
          # cli.connect(("ip地址",端口号))   #连接服务端
          # msg = cli.recv(1024)              #接收信息
          # print(msg.decode("utf-8"))        #打印消息
          # mv = input("》》》》》:")
          # cli.send(mv.encode("utf-8"))        #发消息
          # cli.close()                     #关闭用户端
          

          利用端口传输视频

          import socket
          rev = socket.socket()
          rev.bind(("127.0.0.1",8989))
          rev.listen()
          
          conn,addr = rev.accept()
          filname = conn.recv(1024)
          
          with open(filname.decode("utf-8"),"wb") as f:
              while True:
                  content = conn.recv(1024)
                  if content == b"ok":break
                  f.write(content)
          print("接收完毕")
          conn.close()
          rev.close()
          
          import time
          import os
          import socket
          cli = socket.socket()
          cli.connect(("127.0.0.1",8989))
          cli.send("file".encode("utf-8"))
          time.sleep(0.1)
          size = os.path.getsize("file")
          with open("file","rb") as f:
              while size:
                  content = f.read(1024)
                  size -= len(content)
                  cli.send(content)
              cli.send(b"ok")
              print("传输完毕")
              cli.close()
          
      • 起一个udp协议的socket进行通信

      • # udp协议
        # import socket
        # rev = socket.socket(type=socket.SOCK_DGRAM)
        # rev.bind(("ip地址",端口号))
        #
        # msg,addr = rev.recvfrom(1024)   #接收到的消息
        # print(msg.decode("utf-8"))
        # rev.sendto("你好".encode("utf-8",addr))   #发消息,需要对方的ip地址
        # rev.close()                                 #关闭端口
        
        # import socket
        # cli = socket.socket(type=socket.SOCK_DGRAM)
        # cli.sendto("信息".encode("utf-8"),("ip地址",端口号))   #发消息
        # mv,addr = cli.recvfrom(1024)                    #接收信息和ip地址
        # print(mv.decode("utf-8"))                       #打印信息
        # cli.close()                                     #关闭端口
        
  • 相关阅读:
    npropress进度条插件的使用
    让img图片像背景一样显示
    vue-cli3配置多页面入口
    7中漂亮的纯css字体
    速查手册
    推荐系统架构
    leetcode 172. 阶乘后的零
    C++ string和int互相转换
    特征分解
    线性代数基础
  • 原文地址:https://www.cnblogs.com/yuncong/p/9642633.html
Copyright © 2020-2023  润新知