网络开发的框架

  • 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() #关闭端口

网络编程 基础 基于socket的tcp和udp连接的更多相关文章

  1. 运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接

    运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接 最近在项目中可能要用到socket相关的东西来发送消息,所以初步研究了下socket的TC ...

  2. 从零开始学Python第八周:网络编程基础(socket)

    Socket网络编程 一,Socket编程 (1)Socket方法介绍 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Soc ...

  3. Python网络编程基础 ❷ 基于upd的socket服务 TCP黏包现象

    TCP的长连接 基于upd的socket服务 TCP黏包现象

  4. 基于socket的TCP和UDP编程

    一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...

  5. (转)基于socket的TCP和UDP编程

    一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...

  6. 网络编程基础之Socket套接字

    一.Socket介绍 1.什么是socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族 ...

  7. 网络编程基础之socket套接字编程实现同一IP下的信息传输

    鲁照山 1.网络协议的5层模型,每层内容的整理 2.画图描述三次握手四次挥手,和C端S端的状态 3.写一个客户端,实现给服务端发送hello world 字符串, 写一个服务端,将客户端发送的数据变成 ...

  8. 【Python网络编程】利用Python进行TCP、UDP套接字编程

    之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...

  9. 第1章 网络编程基础(2)——Socket编程原理

    Socket编程原理 Socket是网络通信端点的一种抽象,它提供了一种发送和接收数据的机制. 流socket(SOCK_STREAM):双向.有序.无重复.并且无记录边界 数据报Socket(SOC ...

随机推荐

  1. 描述nginx中worker_processes、worker_cpu_affinity、worker_rlimit_nofile、worker_connections配置项的含义

    worker_processes worker进程的数量,应小于等于cpu核心数,auto为当前主机cpu核心数 work_processes 4 worker_cpu_affinity 配置CPU亲 ...

  2. 01 前端基础之HTML

    目录 前端基础之HTML HTML简介 如何创建及展示 head内常见标签 body内基本标签 特殊符号 常见标签 标签的两大重要属性 列表标签 表格标签 form表单(很重要) 初次体验前后端交互 ...

  3. Pytorch技法:继承Subset类完成自定义数据拆分

    我们在<torch.utils.data.DataLoader与迭代器转换>中介绍了如何使用Pytorch内置的数据集进行论文实现,如torchvision.datasets.下面是加载内 ...

  4. Note -「Lagrange 插值」学习笔记

    目录 问题引入 思考 Lagrange 插值法 插值过程 代码实现 实际应用 「洛谷 P4781」「模板」拉格朗日插值 「洛谷 P4463」calc 题意简述 数据规模 Solution Step 1 ...

  5. Solution -「CF 156D」Clues

    \(\mathcal{Description}\)   link.   给一个 \(n\) 个点 \(m\) 条边的无向图 \(G\).设图上有 \(k\) 个连通块,求出添加 \(k-1\) 条边使 ...

  6. 关于IDA无法从symbol server下载pdb的问题

    在ida目录下,symsrv.dll同目录下创建一个symsrv.yes文件. symsrv.yes将可下载: symsrv.no将失败: 没有相关文件将会弹出授权询问,选择yes和no将创建对应文件 ...

  7. Dubbo服务注册到Zookeeper,对外提供服务的实际类 ref(如:SleepServiceImpl)保存在哪里

    Dubbo服务注册到Zookeeper,其注册的内容为实际对外提供的服务的实现.这个实现保存在哪里(至于具体客户端使用时怎么取后后续阐述)?可以看看Dubbo如何处理的. 对于@DubboServic ...

  8. centos7.+系统,mysql主从部署

    两台服务器或者两个虚拟机 主库:master    IP:192.168.85.152 从库:slave      IP:192.168.85.153 关闭主库防火墙或者放行mysql的3306端口, ...

  9. Anchor-free目标检测综述 -- Keypoint-based篇

      早期目标检测研究以anchor-based为主,设定初始anchor,预测anchor的修正值,分为two-stage目标检测与one-stage目标检测,分别以Faster R-CNN和SSD作 ...

  10. Django框架表关系外键-多对多外键(增删改查)-正反向的概率-多表查询(子查询与联表查询)

    目录 一:表关系外键 1.提前创建表关系 2.目前只剩 书籍表和 书籍作者表没创建信息. 3.增 4.删 5.修改 二:多对多外键增删改查 1.给书籍绑定作者 2.删 3.修改 4.清空 三:正反向的 ...