网络开发的框架

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

转载于:https://www.cnblogs.com/yuncong/p/9642633.html

网络编程 基础 基于socket的tcp和udp连接相关推荐

  1. socket recv 服务端阻塞 python_网络编程(基于socket编程)

    网络编程(基于socket编程) socket套接字:应用程序通常通过socket"套接字"向网络发送请求或应答网络请求,是主机间或同一计算机中的进程间相互通讯 socket是介于 ...

  2. 网络编程(基于socket接口技术的进程间通信)接上一篇文章补充

    目录 一.网络编程(基于socket接口技术) 1.基于TCP协议的网络通信 编程模型: 2.基于UDP通信协议的网络通信 编程模型: 3.新增函数: 大小端数据转换函数: ip地址转换函数: TCP ...

  3. 看完之后保证你对socket编程步骤胸有成竹。 C++ Socket网络编程基础详解(TCP)

    C++ Socket网络编程基础详解(TCP版) ​    网络编程,就是编写程序使得两台计算机交换数据,其实从本质上来讲,网络编程最终所实现的功能,和我们文件的输入输出很相似,只是文件输入输出的对象 ...

  4. 计算机网络(二) | 网络编程基础、Socket套接字、UDP和TCP套接字编程

    目录 一.网络编程基础 1.1 为什么需要网络编程 1.2 什么是网络编程 1.3 网络编程中的基本概念 二.Socket套接字 2.1 概念 2.2 分类 2.3 Java数据报套接字通信模型 2. ...

  5. Java基础学习总结:网络编程之(四)TCP与UDP的区别及常见的网络协议(转)

    TCP和UDP的区别 原文:https://blog.csdn.net/li_ning_/article/details/52117463 1.TCP与UDP基本区别 基于连接与无连接 TCP要求系统 ...

  6. 【Java 网络编程】网络通信原理、TCP、UDP 回显服务

    一.网络发展历史 互联网从何而来? 这要追溯到上个世纪 50 - 60 年代,当时正逢美苏争霸冷战,核武器给战争双方提供了足够的威慑力,想要保全自己,就要保证自己的反制手段是有效的. 如何保证能够反击 ...

  7. 网络编程 数据报是什么?TCP、UDP数据报结构

    数据报 数据报是通过网络传输的数据的基本单元,包含一个报头(header)和数据本身,其中报头描述了数据的目的地以及和其它数据之间的关系.数据报是完备的.独立的数据实体,该实体携带要从源计算机传递到目 ...

  8. js监听select值变化_网络编程——C++实现socket通信(TCP)高并发之select模式

    相关函数: 服务端: socket() bind() listen() FD_ZERO()等辅助函数 select() 高并发select模式 accept() read() 或 recv()等 wr ...

  9. 【JavaEE】网络编程基础之Socket套接字

    ✨哈喽,进来的小伙伴们,你们好耶!✨

  10. Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序

    /*在此只付上头文件,如需要去我的资源下载. http://download.csdn.net/detail/ta893115871/4322905 O(∩_∩)O谢谢 暂时实现的功能有: 1.群聊 ...

最新文章

  1. Microbiome:城市海滩和污水中抗生素抗性组研究
  2. Apache Kafka-初体验Kafka(04)-Java客户端操作Kafka
  3. Spring boot登录错误提示
  4. 如何使用计算机改进生产线,第四章 计算机生产管理.doc
  5. C++STL(set……)
  6. SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战
  7. python中使用函数的优点_在python中使用自定义初始化函数而不是`__init__`的好处...
  8. eclipse中jsp页面 page报错问题
  9. Python运维开发工程师养成记
  10. 专访全面智能CTO陈章:想法只有在技术落地的那一刻才有撬动地球的能力
  11. 【LabVIEW】基于LabVIEW的俄罗斯方块小游戏
  12. MacBook怎样退出apple id
  13. 如何使用云桌面进行开发?
  14. 活体检测 Domain Generalization via Shuffled Style Assembly for Face Anti-Spoofing 论文学习记录
  15. IDEA 快捷键 代码上移一行 下移一行 快捷键 try catch 块 快捷键
  16. 北邮php,周琳娜-北京邮电大学网络空间安全学院
  17. 全面解析四大主流音频技术
  18. 实现NRF52832蓝牙DFU无线升级
  19. BiocManager安装R包解决下载速度太慢的问题
  20. oracle中的index函数,Oracle中的索引详解(整理)

热门文章

  1. java8—Stream
  2. 十四、final关键字
  3. Linux chapter test 10
  4. Oracle 数据类型,表空间、用户与权限,DDL、DML 语句、约束,exp/imp
  5. java.awt Robot 自动化测试 与 KeyEvent 常用按键
  6. mysql不识别生僻字_mysql生僻字插入失败解决方案
  7. c语言 屏幕亮度调节_4096级屏幕亮度调节:改善安卓机自动亮度调节顽疾
  8. beego框架开发投票网站(1) beego基础之运行逻辑
  9. 音视频重新封装的流程
  10. Gym 100703F Game of words 动态规划