Python + Socket 通信
2016-01-05 16:07
561 查看
连接过程
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
服务端
客户端
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
服务端
import socket import time while True: try: localhost = '127.0.0.1' # localhost = '10.0.67.179' sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.bind((localhost,8001)) sock.listen(2) print '---listening 8001---' except: print "initial socket err!" conn,addr = sock.accept() while True: p = '11111' conn.send(p.encode()) print '---send----11111' print time.sleep(2) szBuf = conn.recv(1024).decode() byt = 'recv: ' + szBuf print byt print conn.close() break
客户端
import socket import time while True: try: localhost = '127.0.0.1' # localhost = '10.0.67.179' sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.connect((localhost,8001)) except: print("\n-- err no connection ! --8001-process") break print '---connecting 8001---' while True: szBuf = sock.recv(1024).decode() byt = 'recv: ' + szBuf print byt print p='22222' sock.send(p.encode()) print '---send----22222' print break sock.close() break
相关文章推荐
- Python logging模块详解
- 转载:浅析Python中的多进程与多线程的使用
- 零基础入门学习Python(27):模块和包
- python 数据类型之数值型
- python 文件操作
- python 低版本一段扫描代码
- python 2.7.11 安装pipy包管理器
- python 系统自带的帮助文档查看方法
- [python] 小程序
- Ubuntu下Eclipse搭建python,opencv开发环境
- 字段计算器通过python脚本完成要素节点坐标信息提取到属性字段中
- Python判断文件和文件夹是否存在的方法
- python zip()函数
- python 2.7.11 安装pipy包管理器
- 【CTO讲堂】如何用Python一门语言通吃高性能并发、GPU计算和深度学习
- 如何在Python代码中使用华为公有云SDK
- 使用Python神器对付12306变态验证码
- Python学习手册 - 02
- Python之IPython开发实践
- Python之IPython开发实践