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服务器相关推荐

  1. Python网络编程——TCP与UDP

    Python网络编程 TCP(复杂可靠)与UDP(简单不可靠)的区别 1) TCP提供面向连接的传输,通信前要先建立连接(三次握手机制): UDP提供无连接的传输,通信前不需要建立连接. 2) TCP ...

  2. QT网络编程——TCP服务器和客户端通信

    目录 一.服务器端 1.QT中TCP服务器的开发思路 2.QT服务器界面设计 3.QT服务器代码实现 二.客户端 1.QT中TCP客户端的开发思路 2.QT客户端界面设计 3.QT客户端代码实现 网络 ...

  3. Python网络编程-----TCP

    1.TCP TCP通信模型中,在通信开始之前,⼀定要先建⽴相关的连接,才能发送数据,类似于⽣活中,"打电话".TCP编程分为客户端和服务器端两部分组成,所以我们需要首先完成服务器端 ...

  4. python网络编程—TCP协议(二)

    一.TCP协议的原理图 每个客户端与服务端通讯是互不干扰的 二.注意点 1.tcp服务器─般情况下都需要绑定,否则客户端找不到这个服务器 2.tcp客户端一般不绑定,因为是主动链接服务器,所以只要确定 ...

  5. Python网络编程—TCP套接字之HTTP传输

    HTTP协议 (超文本传输协议) 1.用途 : 网页获取,数据的传输 2.特点: 应用层协议,传输层使用tcp传输 简单,灵活,很多语言都有HTTP专门接口 无状态,协议不记录传输内容 http1.1 ...

  6. Qt网络编程——TCP服务器与客户端互发信息

    前言 前一个博客,试了TCP的服务器与客户端的连接与断开,接下就是客户端与服务器互发信息. 客户端 1.往服务器发送信息 //发送消息 void Client::on_buttonSendMessag ...

  7. python网络编程—TCP协议(一)

    一.TCP协议示意图: listen():监听客户端的连接,客户端有链接,listen马上就有返回. accept():连接之后,会返回客户端的信息(ip地址.端口号),如果没有连接则一直堵塞.连接成 ...

  8. python网络编程---TCP客户端

    0x01 环境 python2. pycharm 0x02 程序 # -*- coding:UTF-8 -*- import sockettarget_host='www.baidu.com' tar ...

  9. [Python 网络编程] TCP、简单socket模拟ssh (一)

    OSI七层模型(Open System Interconnection,开放式系统互联) 应用层网络进程访问应用层:为应用程序进程(例如:电子邮件.文件传输和终端仿真)提供网络服务:提供用户身份验证表 ...

最新文章

  1. javascript --- 事件托付
  2. atmega8a如何烧写程序_如何让树莓派4上固件的debug日志输出到串口?
  3. Cloud for Customer系统里的附件url,可以通过partner编程自己生成么
  4. es算法matlab编程,matlab练习程序(演化策略ES)
  5. linux mv 递归拷贝,奇技淫巧 - 给Linux中的cp和mv命令中添加进度条的高级拷贝
  6. mysql5.6.4m7 linux安装_mysql-5.6.4-m7installinlinux
  7. 再谈编程范式—程序语言背后的思想
  8. 设计模式原则之四:迪米特法则
  9. windows环境下使用virtualenv对python进行多版本隔离
  10. 高性能集群软件Keepalived之安装配置篇
  11. 手动计算均值,方差,协方差,皮尔逊系数
  12. iptables、firewalld和ufw区别linux
  13. JSP中文显示乱码解决方案
  14. css实现超过两行用...表示
  15. 敏感词工具(sensitive word)的使用
  16. pip uninstall
  17. ubuntu设置开机启动图形应用程序,替换默认图形桌面
  18. 大学十年__献给计算机专业的所有学子
  19. TCP窗口管理之发送窗口
  20. 费曼 计算机科学 讲义,《费曼物理讲义》3 物理学与其他科学的关系

热门文章

  1. 判断js中数据类型 的最短代码
  2. CSS Hack 汇总速查一览
  3. jquery笔记一:下载安装、语法、选择器、遍历选择元素的方法、jQuery动画
  4. 为什么dubbo的调用重试不建议设置成超过1
  5. 长为N的数组,元素范围是0-N-1,其中只有一个数是重复的,找出这个重复元素...
  6. numpy 辨异(三)—— hstack/column_stack,linalg.eig/linalg.eigh
  7. 在IIS中部署Asp.net Mvc
  8. java做的一个将中文转换成Unicode码的工具类【转载】做个标记,明天研究下
  9. linux电脑做笔记软件,知识管理工具, 自由格式数据库, 笔记软件以及个人信息管理...
  10. java1a2b3c4d5e6f_用两个线程,一个输出字母,一个输出数字,交替输出1A2B3C4D...26Z...