Python--网络编程学习笔记系列02

TCP和UDP的概述:

  udp通信模型类似于写信,不需要建立相关链接,只需要发送数据即可(现在几乎不用:不稳定,不安全)

  tcp通信模型类似于打电话,一定要建立相关链接才能发送数据(可靠传输机制:超时重传,错误校检,流量控制,阻塞管理等)

TCP:

  tcp通信模型步骤创建连接,数据传送,终止连接

  tcp通信模型只适用于一对一通信,不适合广播

  tcp客户端就是需要被服务的一方,服务器端就是提供服务的一方

tcp客户端

import scoket

def main()

  # 1.创建socket

  tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

  # 2.链接服务器

  server_ip = input("请输入要链接的服务器的ip:")

  server_port = int(input("请输入要链接的服务器的port:"))

  server_addr = (server_ip,server_port )

  tcp_socket.connect(server_addr)

  #tcp_socket.connect("183.23.23.23",8080)

  # 3.发送,接受数据

  send_data = input("请输入要发送的数据:")

  tcp_socket.send(send_data.encode("utf-8"))

  # 4.关闭套接字

  tcp_socket.close()

if  __name__  == "__main__":

main()

tcp服务器

import socket

def main()

  # 1.创建socket(买个手机)

  tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

  # 2.绑定本地信息ip,port(插入手机卡)

  tcp_server_socket.bind("",8080)

  # 3.让默认的套接字由主动变为被动 listen(手机设置为接听响铃)

  tcp_server_socket.listen(125)

  while True:

    print("等待一个新客户到来...")

    # 4.等待客户端链接 accept(等待电话到来)

    new_client_socket, client_addr = tcp_server_socket.accept()

    print("一个新客户已到来%s" % str(client_addr)")

    while True:

    # 5.接受客户端发过来的请求

    recv_data = new_client_socket.recv(1024)

    print("客户端发过来的请求是:%s" % recv_data.decode("utf-8"))

    # 如果recv解堵塞,1客户端发送数据,2客户端调用close

    if recv_data:     

        # 回送一部分数据给客户端

      new_client_socket.send("--ok--",encode("utf--8"))

    else:

      break    

    # 6.关闭套接字

    new_server_socket.close()

    print("已经服务完毕")

  tcp_server_socket.close()

if   __name__ == "__main__"

  main()

结束啦!

Python--网络编程学习笔记系列02 附:tcp服务端,tcp客户端的更多相关文章

  1. Python--网络编程学习笔记系列01 附实战:udp聊天器

    Python--网络编程学习系列笔记01 网络编程基本目标: 不同的电脑上的软件能够实现数据传输 网络编程基础知识: IP地址: 用来在网络中标记一台电脑  网络号+主机号(按网络号和主机号占位分类A ...

  2. python网络编程学习笔记(三):socket网络服务器(转载)

    1.TCP连接的建立方法 客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较. 步骤 TCP客户端 TCP服务器 第一步 建立socket对象  建立socket对 ...

  3. python网络编程学习笔记(10):webpy框架

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi django和webpy都是python的web开发框架.Django的主要目的是简便.快速的开发数据库驱动的网站. ...

  4. python网络爬虫学习笔记

    python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...

  5. 转 网络编程学习笔记一:Socket编程

    题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人:但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有 ...

  6. Linux Shell编程学习笔记——目录(附笔记资源下载)

    LinuxShell编程学习笔记目录附笔记资源下载 目录(?)[-] 写在前面 第一部分 Shell基础编程 第二部分 Linux Shell高级编程技巧 资源下载 写在前面 最近花了些时间学习She ...

  7. JAVA TCP网络编程学习笔记

    一.JAVA网络编程概述 网络应用程序,就是在已实现网络互联的不同计算机上运行的应用程序,这些程序之间可以相互交换数据.JAVA是优秀的网络编程语言,Java网络编程的类库位于java.net包中.J ...

  8. python网络编程学习《一》

    最近,刚实习完,很喜欢实验楼,但是自己的方向仍然不能确定,自己觉得可选择的空间很大,尽管已经是大四的人了,想到别人都在忙着买职业装,买高跟鞋面试,学习化妆什么的,看看自己,反而开始慢慢关注运动,食疗以 ...

  9. python网络爬虫学习笔记(一)Request库

    一.Requests库的基本说明 引入Rquests库的代码如下 import requests 库中支持REQUEST, GET, HEAD, POST, PUT, PATCH, DELETE共7个 ...

随机推荐

  1. 国产时序数据库IotDB安装、与SpringBoot集成

    一.简介: 本文将完成一个真实业务中的设备上报数据的一个例子,完整的展示后台服务接收到设备上报的数据后,将数据添加到时序数据库,并且将数据查询出来的一个例子.本文所有代码已经上传GitHub:http ...

  2. MybatisPlus——实现多数据源操作

    多数据源 适用:一般工作时候会有多个数据库,每个库对应不同的业务数据.程序如果每次数据都访问同一个数据库,该数据库压力很大访问会很慢. 官方文档:https://baomidou.com/(建议多看看 ...

  3. 基于Go语言的xmind读写库,我主要用来把有道云笔记思维导图转为xmind

    项目地址 xmind 基于go语言的xmind接口 使用方法参考: example 本库主要加载xmind文件为json结构,保存文件时也用的json结构而不是xml结构 本库只做了最基本的主题添加功 ...

  4. Flink介绍

    1,简介 Flink是Apache基金会旗下的一个开源大数据处理框架.Flink很牛逼,好多牛逼的公司都在用. 2,特征 *高吞吐和低延迟.每秒处理百万个时间,毫秒级延迟.有点既要老婆好,又要彩礼少的 ...

  5. 实践分享!GitLab CI/CD 快速入门

    用过 GitLab 的同学肯定也对 GitLab CI/CD 不陌生,GitLab CI/CD 是一个内置在 GitLab 中的工具,它可以帮助我们在每次代码推送时运行一系列脚本来构建.测试和验证代码 ...

  6. Altium Designer 18学习

    目录 目录 快捷键 通孔 敷铜 修改铜皮与导线之间的间隔 去除指定敷铜区域 DRC设计规则检查问题: 快捷键 EJC 快速跳转到器件 M 移动 CTRL+M 测量距离 通孔 敷铜 放置多边形平面 -- ...

  7. K8S_总结

    K8S 核心组件 配置存储中心 --> etcd服务 主控(master)节点 ​ [1] kube-apiserver 服务 apiserver:(K8S 大脑) 1. 提供了集群管理的 RE ...

  8. Windows 2012 R2 iSCSI server

     Windows 2012 R2可以充当一台简单的SAN,提供iSCSI方式的连接,供客户端使用.不确定是否有人会这么使用,但至少在做实验的时候我觉得挺方便的.不用再像以前专门安装windows ...

  9. AVL tree 高度上下界推导

    1. 最大高度对应 Node 数量 \(N_{h}\) 的递归公式 设有一棵 AVL tree 的高度为 \(h\), 对于该树, 构成该树的最少 node 数量为 \(N_{h}\) . 有: 最坏 ...

  10. Java SE 四大内部类

    内部类 1.成员内部类 调用成员内部类 //在外面的类的最后,写一个方法,调用成员内部类(创建对象,在访问) class Outer08{ class Inner08{ //成员内部类 public ...