python网络编程---TCP服务器
0x01 环境
python2 pycharm
0x02 程序
客户端程序:
# -*- coding:UTF-8 -*-
import socket
'''
target_host='www.baidu.com'
target_port=80
'''
target_host='localhost'
target_port=3345
data='ABCDEF'# 创建一个socket对象
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 连接客户端
client.connect((target_host,target_port))
# 发送一些数据
#client.send("GET / HTTP/1.1\r\nHost:baidu.com\r\n\r\n")
client.send(data)
# 接收一些数据
response=client.recv(4096)
print response
服务器端程序:
# -*- coding:utf-8 -*-
import socket
import threadingbind_ip="localhost"
bind_port=3345server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind((bind_ip,bind_port))
server.listen(1)print "[*] Listening on %s:%d" %(bind_ip,bind_port)#这是客户处理线程
def handle_client(client_socket):#打印客户端发送得到的东西request = client_socket.recv(1024)print "[*] Received:%s" % request#返回一个数据包client_socket.send("ACK")client_socket.close()while True:client,addr=server.accept()print addrprint "[*] Accepted connection from: %s:%d" %(addr[0],addr[1])#挂起客户端程序,处理传入的数据client_handler=threading.Thread(target=handle_client,args=(client,))#target是线程需要去执行的函数名,args是一个元组,是函数的参数client_handler.start()
0x03 解释
客户端程序我就不解释了,我在另一篇解释的很详细,不明白可以到这里看
https://blog.csdn.net/qq_41683305/article/details/113809707
服务端程序:
server.bind((bind_ip,bind_port))
bind(address):绑定地址(host,port)到套接字, 在 AF_INET下,以元组(host,port)的形式表示地址。
server.listen(1)
listen(backlog):开始 TCP 监听。backlog 指定在拒绝连接之前,操作系统可以挂起的最大连接数量
client,addr=server.accept()
accept():接受一个客户端的连接请求,不同于以上socket()返回的用于监听和接受客户端的连接请求的套接字,与客户端通信是通过这个新的套接字上发送和接收数据来完成的,每个连接进来的客户端,都会通过accept函数返回一个不同的客户端socket对象和属于客户端的套接字,client就是新的套接字,addr是一个元组,存放的第一个元素是客户端IP,第二个是端口
client_handler=threading.Thread(target=handle_client,args=(client,))
Thread是一个类,创建一个新的线程对象,target指定调用的函数,args指定调用函数的参数,是一个元组,后面要加一个’,’ ,当调用start函数时,就回去执行这个函数
0x04 远行结果
先运行服务端程序,再运行客户端程序
服务器端结果:
客户端结果:
python网络编程---TCP服务器相关推荐
- Python网络编程——TCP与UDP
Python网络编程 TCP(复杂可靠)与UDP(简单不可靠)的区别 1) TCP提供面向连接的传输,通信前要先建立连接(三次握手机制): UDP提供无连接的传输,通信前不需要建立连接. 2) TCP ...
- QT网络编程——TCP服务器和客户端通信
目录 一.服务器端 1.QT中TCP服务器的开发思路 2.QT服务器界面设计 3.QT服务器代码实现 二.客户端 1.QT中TCP客户端的开发思路 2.QT客户端界面设计 3.QT客户端代码实现 网络 ...
- Python网络编程-----TCP
1.TCP TCP通信模型中,在通信开始之前,⼀定要先建⽴相关的连接,才能发送数据,类似于⽣活中,"打电话".TCP编程分为客户端和服务器端两部分组成,所以我们需要首先完成服务器端 ...
- python网络编程—TCP协议(二)
一.TCP协议的原理图 每个客户端与服务端通讯是互不干扰的 二.注意点 1.tcp服务器─般情况下都需要绑定,否则客户端找不到这个服务器 2.tcp客户端一般不绑定,因为是主动链接服务器,所以只要确定 ...
- Python网络编程—TCP套接字之HTTP传输
HTTP协议 (超文本传输协议) 1.用途 : 网页获取,数据的传输 2.特点: 应用层协议,传输层使用tcp传输 简单,灵活,很多语言都有HTTP专门接口 无状态,协议不记录传输内容 http1.1 ...
- Qt网络编程——TCP服务器与客户端互发信息
前言 前一个博客,试了TCP的服务器与客户端的连接与断开,接下就是客户端与服务器互发信息. 客户端 1.往服务器发送信息 //发送消息 void Client::on_buttonSendMessag ...
- python网络编程—TCP协议(一)
一.TCP协议示意图: listen():监听客户端的连接,客户端有链接,listen马上就有返回. accept():连接之后,会返回客户端的信息(ip地址.端口号),如果没有连接则一直堵塞.连接成 ...
- python网络编程---TCP客户端
0x01 环境 python2. pycharm 0x02 程序 # -*- coding:UTF-8 -*- import sockettarget_host='www.baidu.com' tar ...
- [Python 网络编程] TCP、简单socket模拟ssh (一)
OSI七层模型(Open System Interconnection,开放式系统互联) 应用层网络进程访问应用层:为应用程序进程(例如:电子邮件.文件传输和终端仿真)提供网络服务:提供用户身份验证表 ...
最新文章
- javascript --- 事件托付
- atmega8a如何烧写程序_如何让树莓派4上固件的debug日志输出到串口?
- Cloud for Customer系统里的附件url,可以通过partner编程自己生成么
- es算法matlab编程,matlab练习程序(演化策略ES)
- linux mv 递归拷贝,奇技淫巧 - 给Linux中的cp和mv命令中添加进度条的高级拷贝
- mysql5.6.4m7 linux安装_mysql-5.6.4-m7installinlinux
- 再谈编程范式—程序语言背后的思想
- 设计模式原则之四:迪米特法则
- windows环境下使用virtualenv对python进行多版本隔离
- 高性能集群软件Keepalived之安装配置篇
- 手动计算均值,方差,协方差,皮尔逊系数
- iptables、firewalld和ufw区别linux
- JSP中文显示乱码解决方案
- css实现超过两行用...表示
- 敏感词工具(sensitive word)的使用
- pip uninstall
- ubuntu设置开机启动图形应用程序,替换默认图形桌面
- 大学十年__献给计算机专业的所有学子
- TCP窗口管理之发送窗口
- 费曼 计算机科学 讲义,《费曼物理讲义》3 物理学与其他科学的关系
热门文章
- 判断js中数据类型 的最短代码
- CSS Hack 汇总速查一览
- jquery笔记一:下载安装、语法、选择器、遍历选择元素的方法、jQuery动画
- 为什么dubbo的调用重试不建议设置成超过1
- 长为N的数组,元素范围是0-N-1,其中只有一个数是重复的,找出这个重复元素...
- numpy 辨异(三)—— hstack/column_stack,linalg.eig/linalg.eigh
- 在IIS中部署Asp.net Mvc
- java做的一个将中文转换成Unicode码的工具类【转载】做个标记,明天研究下
- linux电脑做笔记软件,知识管理工具, 自由格式数据库, 笔记软件以及个人信息管理...
- java1a2b3c4d5e6f_用两个线程,一个输出字母,一个输出数字,交替输出1A2B3C4D...26Z...