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小练习之二 需求:实现用户登录,用户名和密码保存到文件里,连续输入 ...
随机推荐
- 遍历List过程中同时修改
public static void Main() { List<int> list = new List<int>(); ,,,,,,,,,}; list.AddRange( ...
- poj 1523"SPF"(无向图求割点)
传送门 题意: 有一张联通网络,求出所有的割点: 对于割点 u ,求将 u 删去后,此图有多少个联通子网络: 对于含有割点的,按升序输出: 题解: DFS求割点入门题,不会的戳这里
- socket关闭状态问题
下面是对 譬如 “CLOSE_WAIT” 现象的一些解释: 主动关闭方和被动方经历的状态:FIN_WAIT_1(主动关闭一方): 当SOCKET在ESTABLISHED状态时,它想主动关 闭 ...
- (最小生成树 并查集)P1111 修复公路 洛谷
题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你什么时 ...
- POE 供电
受电设备(PD)和供电设备(PSE) 标准的五类网线有四对双绞线但是在10M BASE-T和100M BASE-T中只用到其中的两对.IEEE80 2.3af允许两种用法: 1.应用空闲脚供电时4.5 ...
- Python网络编程之socket编程
什么是Socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...
- 【强大的视频编辑工具】Adobe Premiere Pro CC 2019 for Mac
[简介] PR CC是视频编辑爱好者和专业人士必不可少的视频编辑工具.它可以提升您的创作能力和创作自由度,它是易学.高效.精确的视频剪辑软件.PR CC提供了采集.剪辑.调色.美化音频.字幕添加.输出 ...
- 流畅的python--2 序列构成的数组
我们把文本.列表和表格叫做数据火车...FOR命令通常能作用于数据火车上. ---ABC Programmer's Handbook 不管是哪种数据结构,字符串.列表.字节序列.数组.XML ...
- jmeter计算身份证校验位
idcard_no='111111198101017000' ; idcard_no_array = idcard_no.substring(0,17).toCharArray(); int[] c ...
- JavaEE正常开发怎么做
如果不使用第三方框架,用JavaEE的内容怎么去开发呢? 例如这里有一个需求: 最传统的方案如下: