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. java学习第七天xml.day18

    反射 在java中,反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力. 获取字节码的方式: 使用反射获取构造器 : 内省

  2. CF1450G. Communism(状压DP)

    题面 有一个字符串 s \tt s s 和一个有理数 k \tt k k,可以进行如下操作任意次: 选一个当前串中存在的字符 x \tt x x ,令 i 1 , i 2 , . . . , i m ...

  3. 【java】学习路径38-数学模型分析:不同方式复制文件所需的时间

    测试文件:一段72kb的文本.约5.6MB大小的pdf论文.约38.9MB大小的无损音频文件. demo001 论<到灯塔去>的凝视主题.pdf irreplaceable.movpkg ...

  4. 第七十四篇:Vue组件父子传值

    好家伙, 1.组件之间的关系 在项目开发中,组件之间的最常见关系分为如下两种: (1)父子关系 (2)兄弟关系 2.父子之间的数据共享 (1)父->子共享数据 父组件向子组件共享数据需要使用自定 ...

  5. 【读书笔记】C#高级编程 第二十四章 文件和注册表操作

    (一)文件和注册表 对于文件系统操作,相关的类几乎都在System.IO名称空间中,而注册表操作由System.Win32名称空间中的类来处理. (二)管理文件系统 System.MarshalByR ...

  6. 用trie树解决最大异或对问题(On)

    在给定的N个整数A1,A2--ANA1,A2--AN中选出两个进行xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数N. 第二行输入N个整数A1A1-ANAN. 输出格式 输出一 ...

  7. SSM保姆级从创建项目到使用,包括事务和设置回滚

    1. 简介 Spring 和 Mybaits整合 2. 创建项目 负责将代理类记性扫描,扫描的是Mapper接口所在的包,这个是mybatis提供的,所以会去找SqlSessionFactory 2. ...

  8. day39-网络编程01

    Java网络编程01 1.网络相关的概念 1.1网络通信和网络 网络通信 概念:两台设备之间通过网络实现数据传输 网络通信:将数据通过网络从一台设备传输到另一台设备 java.net包下提供了一系列的 ...

  9. nginx反向代理单独的java项目配置示例

    # jar包封装成docker镜像启动 docker run -d -v /var/log/xxx:/var/log/xxx --restart=always --network host --nam ...

  10. mysql8.0.25版本设置主从数据库,并且从库只读

    具体操作步骤 说明:主从数据库版本一致 1.主库创建同步使用的用户 create user 'repl'@'%' identified with 'mysql_native_password' by ...