python小练习---TCP服务器端
针对于上一篇分享
python小练习---TCP客户端 http://www.cnblogs.com/zhaijiahui/p/6926197.html
我继续按书中内容,向下进行
这里需要强调一个事
py3在使用 send() 和 recv() 的时候会出现
TypeError: a bytes-like object is required, not 'str'
解决方法:
send() 里面的内容用 encode(‘utf-8’) 编码发送
recv() 用 decode(‘utf-8’) 解码接收
好,这个问题解决了,可以结合前面的客户端,建立一个完整的TCP通信
# -*- coding:utf-8 -*-
# 创建客户端,类似于浏览器发送请求 import socket target_host = "127.0.0.1" # 127.0.0.1
target_port = 9999 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 创建TCP连接
client.connect((target_host,target_port)) inputs = "zhaijh111"
client.send(inputs.encode("utf-8"))
response = client.recv(4096).decode("utf-8") print(response)
下面是服务器端
# -*- coding:utf-8 -*-
# 接收器
import socket
import threading bind_ip = "0.0.0.0"
bind_port = 9999
size = 4096 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 将套接字绑定到地址, 在AF_INET下,以元组(host,port)的形式表示地址.
server.bind((bind_ip,bind_port))
# 开始监听TCP传入连接。backlog指定在拒绝连接之前,操作系统可以挂起的最大连接数量。
# 该值至少为1,大部分应用程序设为5就可以了。
server.listen(5) print("[*] Listening on %s:%d" % (bind_ip,bind_port)) # 1 def handle_client(client_socket): request = client_socket.recv(size).decode("utf-8")
print("[*] Received: %s" % request) reply = "ACK!"
client_socket.send(reply.encode("utf-8"))
client_socket.close() while True:
# print("waiting for connection...")
client,addr = server.accept() # 2
# 接受TCP连接并返回(conn,address),其中conn是新的套接字对象,可以用来接收和发送数据。address是连接客户端的地址。 print("[*] Accepted connection from: %s:%d" % (addr[0],addr[1])) client_handler = threading.Thread(target=handle_client,args=(client,)) # 3
client_handler.start()
运行结果:

我们分析一些服务器端程序
1、 服务器建立TCP套接字,并绑定连接,打印监听端口
2、 服务器接收到客户端的connect 建立连接成功,打印Accepted connection
3、 通过线程调用handle_cliet() ,接收信息,并返回一个ACK!
注意期间发送的字符串,在py3中需要做编码,我前面提到的
python小练习---TCP服务器端的更多相关文章
- python小练习---TCP客户端
这是python黑帽子上的起始练习,我对其中的用到的函数做了注释,以便日后便于理解. 该程序可以访问百度,返回响应信息. 另外,我注释还有一部分UDP客户端的语句,TCP和UDP对比便于记忆. # - ...
- 170925_1 Python socket 创建TCP的服务器端和客户端
[Python版本]3.6 [遇到的问题] 客户端和服务器端都遇到:TypeError: a bytes-like object is required, not 'str' [解决方案] 参考:ht ...
- 【Python】如何基于Python写一个TCP反向连接后门
首发安全客 如何基于Python写一个TCP反向连接后门 https://www.anquanke.com/post/id/92401 0x0 介绍 在Linux系统做未授权测试,我们须准备一个安全的 ...
- python中的tcp示例详解
python中的tcp示例详解 目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 tcp客户端 tcp服务器 tcp注意点 TCP简介 TCP介绍 TCP协议 ...
- python 网络编程-TCP/UDP
摘抄自:廖雪峰的官方网站:http://www.liaoxuefeng.com/ TCP客户端和服务器端代码: #coding=utf-8 #客户端程序TCP 连接 import socket s=s ...
- Python小工具--删除svn文件
有的时候我们需要删除项目下的svn相关文件,但是SVN会在所有的目录下都创建隐藏文件.svn,手工一个个目录查找然后删除显然比较麻烦.所以这里提供了一个Python小工具用于批量删除svn的相关文件: ...
- python socket之tcp服务器与客户端demo
python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...
- python小练习(自己瞎倒腾)
python小练习 在网上无意中看到一个问题,心血来潮写了写,觉得比较有意思,以后遇到这种有意思的小练习也记录下. #!/usr/bin/env python # -*- coding:utf-8 - ...
- python小练习之二
title: python小练习之二 tags: 新建,模板,小书匠 grammar_cjkRuby: true --- python小练习之二 需求:实现用户登录,用户名和密码保存到文件里,连续输入 ...
随机推荐
- Hibernate3 多对多关系
学习hibernate的笔迹第三篇,主要内容:多对多关系, 检索策略,HQL查询,QBC,事物管理,c3p0配置 1.1.1 Hibernate的关联关系映射:(多对多) 1.1.1.1 多 ...
- Day24--Python--常用模块03--正则表达式
正则表达式是对字符串操作的⼀种逻辑公式. 我们⼀般使⽤正则表达式对字符串进⾏匹配和过滤. 使⽤正则的优缺点: 优点: 灵活, 功能性强, 逻辑性强. 缺点: 上⼿难. ⼀旦上⼿, 会爱上这个东⻄ ⼯具 ...
- C++对象作为返回值的问题
#include "stdio.h" class Object{ public: int i; Object& method1(){ return *this; } }; ...
- Vue(基础三)_监听器与计算属性
一.前言 本文主要涉及: 1.watch()监听单个属性 2.computed可以监听多个属性 3.点击li标签切换音乐案例 二.主要内容 1.watch()监听器(监听单一数据) (1)监听 ...
- 流明(lux)和坎德拉;
流明是光照度: 坎德拉是光强: 流明是光通量的单位, cd是光强单位 光强是单位立体角的光通量: 照度是单位面积的光通量: 尼特是亮度单位 1尼特 = 1CD/m^2: 1 lx = 1 流明每 ...
- 11款插件让你的Chrome成为全世界最好用的浏览器|Chrome插件推荐
文章来源:知乎 收录于:风云社区(SCOEE)[提供mac软件下载] 更多专题,可关注小编[磨人的小妖精],查看我的文章,也可上[风云社区 SCOEE],查找和下载相关软件资源. (一)综合类: 新买 ...
- bzoj1003 最短路+dp
遇到小范围数据的题目就容易被限制了思维,我单知道数据小可以跑很多遍最短路,但我没想到暴力跑N ^ 2的最短路也能过 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输 ...
- bzoj2333 离线 + 线段树
https://www.lydsy.com/JudgeOnline/problem.php?id=2333 有N个节点,标号从1到N,这N个节点一开始相互不连通.第i个节点的初始权值为a[i],接下来 ...
- Hadoop记录-hadoop集群常见问题汇总
[问题1]HBase Shell:ERROR: org.apache.hadoop.hbase.IPc.ServerNotRunningYetException: Server is not runn ...
- Linux学习笔记:【000】Linux系统入门
什么是Linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX(可移植操作系统接口 Portable Operating System Interface of UN ...