传输控制协议(官方术语为TCP/IP协议)是互联网的重要组成部分。TCP的第一个版本是在1974年定义的,它建立在网际层协议(IP)提供的数据包传输技术之上。TCP使得应用程序可以使用连续的数据流进行相互通信,除非出现网络原因导致连接中断等意外情况,否则TCP都能保证数据流完整的传输给接收方,而不会发生丢包、重包或乱序的问题。

  传输文档和文件的协议几乎都是使用TCP的,这包括通过浏览器浏览网页、文件传输以及用于电子邮件传输的所有主要机制。TCP协议是双向通信的,需要先建立连接然后才能互相通信。其中涉及到一些通信、网络相关方面的知识,这里不进行详细解释,如果不大了解,请自行去查看有关资料。

  TCP服务器的建立可以归纳如下:(1).开启套接字(socket);(2).绑定服务端口;(3).开始监听;(4).等待客户端连接;(5).和客户端对话。TCP服务器源程序代码如下所示:

 1 #!/usr/bin/env python
 2 # coding=utf8
 3
 4 from socket import *
 5
 6 host = ''
 7 port = 12345
 8 bufsiz = 1024
 9
10 tcpSerSock = socket(AF_INET, SOCK_STREAM)   # 开启套接字
11 tcpSerSock.bind((host, port))               # 绑定服务端口
12 tcpSerSock.listen(5)                        # 开始监听
13
14 while True:
15     print 'Please waiting for connection...'      # 等待客户端连接
16     tcpCliSock, addr = tcpSerSock.accept()
17     print '...connected from:', addr
18
19     while True:
20         data = tcpCliSock.recv(bufsiz)      # 接收客户端信息
21         if not data:
22             break
23         tcpCliSock.send('[%s] %s' % ("You send:", data))    # 给客户端发送信息
24     tcpCliSock.close()
25
26 tcpSerSock.close()

运行结果如下所示:

Please waiting for connection...

  TCP客户端的创建可总结如下:(1).开启套接字(socket);(2).连接服务器;(3).开始对话。TCP客户端源程序代码如下所示:

 1 #!/usr/bin/env python
 2 # coding=utf8
 3
 4 from socket import *
 5
 6 host = 'localhost'
 7 port = 12345
 8 bufsiz = 1024
 9
10 tcpCliSock = socket(AF_INET, SOCK_STREAM)    # 开启套接字
11 tcpCliSock.connect((host, port))             # 连接到服务器
12
13 while True:
14     data = raw_input('> ')      # 等待输入
15     if not data:
16         break
17     tcpCliSock.send(data)       # 发送信息
18     response = tcpCliSock.recv(bufsiz)       # 接受返回信息
19     if not response:
20         break
21     print response
22
23 tcpCliSock.close()

执行客户端源程序文件,可知:需要我们输入信息,才能显示返回信息;而回过头再看一下服务端的运行结果,显示结果如下所示:

Please waiting for connection...
...connected from: ('127.0.0.1', 52089)

注意:运行结果中的52089在不同情况下的显示是不一样的。接着,我们来验证一下客户端接收返回信息的功能,例如向客户端源程序执行结果中输入:Welcome to visit elijah7i's blog !

运行结果如下所示:

> Welcome to visit elijah7i's blog !
[You send:] Welcome to visit elijah7i's blog !
> 

转载于:https://www.cnblogs.com/mix88/p/6185048.html

Python网络编程之TCP服务器客户端(二)相关推荐

  1. Python网络编程之web服务器

    1.HTTP协议 HTTP协议(HyperText Transfer Protocol,超文本传输协议)使用于从www服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更高效,使网络传输减少.它不 ...

  2. Python网络编程之TCP通信实例和socketserver框架使用例子

    http://www.jb51.net/article/49359.htm 转载于:https://blog.51cto.com/duallay/1681062

  3. Python网络编程之二:网络编程基础

    Python网络编程之二:网络编程基础 一.基础概念 1.两个地址 1.1.mac地址 mac地址:直译为媒体存取控制位址,也称为局域网地址.MAC位址.以太网地址或物理地址,它是一个用来确认网络设备 ...

  4. Python中的网络编程之TCP

    Python中的网络编程之TCP 文章目录 Python中的网络编程之TCP 1.TCP介绍 2.TCP特点 3.TCP与UDP的不同点 4.tcp通信模型 5.tcp客户端 6.tcp服务器 7.T ...

  5. 网络编程之TCP客户端程序开发

    网络编程之TCP客户端程序开发 1. 开发 TCP 客户端程序开发步骤 2. socket 类的介绍 3. TCP 客户端程序开发示例代码 4. 小结 1. 开发 TCP 客户端程序开发步骤 创建客户 ...

  6. Java网络编程之TCP、UDP

    Java网络编程之TCP.UDP 2014-11-25 15:23 513人阅读 评论(0) 收藏 举报 分类: java基础及多线程(28) 版权声明:本文为博主原创文章,未经博主允许不得转载. J ...

  7. Centos网络编程之tcp十一种状态及问题处理办法

    尊重原创版权: https://www.noveljp.com/hot/43730.html 更多内容参考: https://www.noveljp.com/ Linux网络编程之tcp十一种状态及问 ...

  8. Python网络编程之day01-网络编程基础

    Python网络编程之day01-网络编程基础 文章目录 Python网络编程之day01-网络编程基础 一.网络通信概述 二.IP地址 三.ping,ifconfig,ipconfig 四.端口 代 ...

  9. java 网络编程简单聊天_网络编程之 TCP 实现简单聊天

    网络编程之 TCP 实现简单聊天 客户端 1.连接服务器 Socket 2.发送消息 package lesson02;import java.io.IOException;import java.i ...

最新文章

  1. unity点击按钮换按钮图标
  2. studio 3t 在ubuntu中使用_在ubuntu中使用ufw配置防火墙
  3. Android 使用PDF.js浏览pdf
  4. GitHub+Jenkins持续集成简介
  5. (王道408考研数据结构)第五章树-第一节:树的定义、基本用语和常考性质
  6. java商品列表展示_前台开发-----开发商品的列表显示
  7. Java基础总结--1
  8. java源码-AtomicInteger
  9. win10如何微信多开(无需工具)
  10. UI设计中标签栏图标设计规范
  11. 地理加权回归的学习(地理加权回归用来量化空间异质性)
  12. UML与Rational Rose
  13. python调用高德接口获取国内行政区经纬度数据
  14. error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054解决方法
  15. RGB颜色过度,数值转颜色
  16. 芯片解密MC9S08DZ16 飞思卡尔系列芯片解密
  17. java web工程,传递字符串参数小记
  18. 自制COREXY结构的3D打印机
  19. 开源:全球软件产业四大发展趋势之一(转)
  20. 变频空调和定频空调的区别

热门文章

  1. jsonobject修改key的值_JSON字符串操作移除空串更改key/value的介绍
  2. java 英文字符串排序_英文字符串排序算法
  3. 清华计算机自主招生试题,2017年清华大学自主招生笔试题
  4. NYOJ 2 括号配对问题
  5. go返回多个值和python返回多个值对比
  6. 160 - 7 aLoNg3x.2
  7. python方法items_Python字典items()方法与示例
  8. Python---二分法查找
  9. 树莓派3b安装ubuntu mate(在有显示器前提下看)
  10. 华为mate50鸿蒙,华为Mate50Pro首次曝光,5000mAh+鸿蒙OS+120Hz,太强