Python基础-TCP编程
来源:互联网 发布:遗传算法的步骤 编辑:程序博客网 时间:2024/06/14 08:56
Tcp的基本概念就不错说了,主要介绍一下python的socket使用。
服务器
需要绑定一个端口并开始监听其他客户端连接。
import socketimport threadingdef thread_fun(sock,addr): print('accept new client from %s:%s' % (sock, addr)) sock.send('hello'.encode('utf-8')) while True: try: data = sock.recv(1024) if not data or data.decode('utf-8') == 'quit': break #接受到 加个头返回去 sock.send(('hello %s' % data.decode('utf-8')).encode('utf-8')) except OSError: print('client close %s:%s' % (sock, addr)) return None print('client %s:%s quit' % (sock, addr)) sock.close()s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind(('127.0.0.1', 10000)) #绑定一个Ip和端口s.listen(5) #监听队列长度为5print('server run waiting for connection...')while True: try: #等待一个新连接 sock, addr = s.accept() #创建线程处理连接 thread = threading.Thread(target=thread_fun, args=(sock,addr)) thread.start() except OSError: pass
客户端
import sockets = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 建立连接s.connect(('127.0.0.1', 10000))# 接受服务器消息print(s.recv(1024).decode('utf-8'))for data in [b'Bob', b'Jack', b'Rose']: # 发送数据 s.send(data) print(s.recv(1024).decode('utf-8'))s.send(b'quit')
结论
打印消息如下
#客户端hellohello Bobhello Jackhello Rose#服务器server run waiting for connection...accept new client from <socket.socket fd=216, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 10000), raddr=('127.0.0.1', 51335)>:('127.0.0.1', 51335)client <socket.socket fd=216, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 10000), raddr=('127.0.0.1', 51335)>:('127.0.0.1', 51335) quit
用TCP协议进行Socket编程在Python中十分简单,对于客户端,要主动连接服务器的IP和指定端口,对于服务器,要首先监听指定端口,然后,对每一个新的连接,创建一个线程或进程来处理。通常,服务器程序会无限运行下去。
同一个端口,被一个Socket绑定了以后,就不能被别的Socket绑定了。
阅读全文
0 0
- Python基础-TCP编程
- Python基础-TCP编程
- Python基础-TCP编程初识
- C# TCP编程基础
- Tcp编程基础
- JAVA基础--TCP编程
- python socket编程 TCP
- Python socket编程(TCP)
- Python socket编程(TCP)
- Python TCP编程
- Python---TCP编程
- TCP编程(python)
- python TCP编程小试牛刀
- python 学习-- TCP编程
- TCP编程-python实现
- Python网络编程--TCP
- python TCP/IP 编程
- tcp编程-python
- HttpComponents
- ORACLE 一个简单的存储过程逐行处理
- openfire集群搭建文档
- Android自定义控件---DrawText 基线的确定
- thinkPHP多语言时修改默认语言
- Python基础-TCP编程
- 102. Binary Tree Level Order Traversal
- PL/SQL登录时报连接符标识错误解决方法
- textview 手动的设置周围的照片
- Webpack打包后体积过大的优化思路
- 分布式锁的几种实现方式
- 2017年给自己定下的小目标
- Android Design风格组件之Bottom navigation
- 分享我的Studio LogCat