python中的TCP编程学习
今天看了一下关于python的TCP编程。
发现思路和其他语言(比如java)思路基本上差点儿相同。
先看client。基本过程例如以下:
- 第一步:创建一个socket
- 第二步:建立连接
- 第三步:发送数据
- 第四步:读取从server发送过来的数据
- 第五步:关闭连接
- 第六步:对收到的数据进行处理
以下为python的TCP编程的client程序的一个小样例。java中关于网络编程的博文请看这里
#coding:utf-8
#TCP编程的client程序
#编写client程序与其他语言(比如java)的思路差点儿相同。例如以下
#第一步:创建一个socket
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#第二步:建立连接,參数是一个tuple,以訪问新浪为例
s.connect(('www.sina.com.cn',80))#80port是Web服务的标准port
#第三步:发送数据
s.send(b'GET / HTTP/1.1\r\n Host:www.sina.com.cn\r\nConnection:close\n\r\n')
#第四步:接收数据
buffer=[]
while True:
d=s.recv(1024) #recv(max)方法。表示每次仅仅能读取max个字节
if d:
buffer.append(d)
else:
break
date=b''.join(buffer)
#第五步:关闭连接
s.close()
#第六步:对接收到的数据进行处理
#因为接收到的数据包含http头和网页本身。因此将其分开
header,html=date.split(b'\r\n\r\n',1)
print(header.decode('utf-8'))
with open('sina.html','wb') as f:
f.write(html)
以下看server端的程序。思路例如以下
- 第一步:创建一个socket
- 第二步:绑定监听的地址和port,方法bind()仅仅接收一个tuple
- 第三步:调用listen()方法開始监听port,传入的參数指定等待连接的最大数量
- 第四步:server程序通过一个永久循环来接收来自client。accept()会等待并返回一个client的连接
#python中的server端的程序,其用来測试的client程序为:tcpClient1.py
#coding:utf-8
import socket
import threading
def tcplink(sock,addr):
print('Accept new connection from %s:%s...'%addr)
sock.send(b'welcome')
while True:
date=sock.recv(1024)
if not date or date.decode('utf-8')=='exit':
break
print(date.decode('utf-8'))
sock.close()
print('Connection from %s:%s'%addr)
#第一步:创建一个socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#第二步:绑定监听的地址和port,方法bind()仅仅接收一个tuple
s.bind(('127.0.0.1',9999))
#第三步:调用listen()方法開始监听port。传入的參数指定等待连接的最大数量
s.listen(10)
#第四步:server程序通过一个永久循环来接收来自client,accept()会等待并返回一个client的连接
while True:
sock,addr=s.accept()
#创建一个新线程来处理TCP链接
threading.Thread(target=tcplink,args=(sock,addr)).start()
測试上面的server端的程序。我们用一个简单的client程序来測试。例如以下
#为tcpServerserver端写一个測试的client程序
#coding:utf-8
import socket
#第一步:创建一个socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#第二步:建立连接
s.connect(('127.0.0.1',9999))
#第三步:发送数据
s.send(b'hello World!')
#第三步:接收数据
date=s.recv(1024)
print(date.decode('utf-8'))
刚好前几天系统的学习了一下git版本号控制这个工具。于是,也就開始经营我的Github了,上面的代码可在我的Github中下载,点击这里就可以
參考地址例如以下:关于TCP编程的具体介绍http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432004374523e495f640612f4b08975398796939ec3c000
python中的TCP编程学习的更多相关文章
- Python中的TCP编程,实现客户端与服务器的聊天(socket)
参考大神blog:自己再写一个 https://blog.csdn.net/qq_31187881/article/details/79067644
- python中的tcp示例详解
python中的tcp示例详解 目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 tcp客户端 tcp服务器 tcp注意点 TCP简介 TCP介绍 TCP协议 ...
- Python中的并发编程
简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态.打开文件列表.追踪指令执行情况的程序指针以及一个保存局部变量的调用栈.通常情况下,一个进程依照一个单序列控制流顺序执 ...
- Python 中的 TK编程
可爱的 Python:Python 中的 TK编程 http://www.ibm.com/developerworks/cn/linux/sdk/python/charm-12/ python che ...
- 可爱的 Python : Python中的函数式编程,第三部分
英文原文:Charming Python: Functional programming in Python, Part 3,翻译:开源中国 摘要: 作者David Mertz在其文章<可爱的 ...
- Python中的多线程编程,线程安全与锁(二)
在我的上篇博文Python中的多线程编程,线程安全与锁(一)中,我们熟悉了多线程编程与线程安全相关重要概念, Threading.Lock实现互斥锁的简单示例,两种死锁(迭代死锁和互相等待死锁)情况及 ...
- Python中的Tcp协议的应用之Tcp服务端程序开发
TCP通信协议是面向连接的可靠的网络通信协议. 网络间想要进行数据传输必须要用到socket,socket翻译过来叫做套接字,其主要作用是不同设备或同一台设备之间的进程通信工具. Python中的Tc ...
- Python中的并行编程速度
这里主要想记录下今天碰到的一个小知识点:Python中的并行编程速率如何? 我想把AutoTool做一个并行化改造,主要目的当然是想提高多任务的执行速度.第一反应就是想到用多线程执行不同模块任务,但是 ...
- python进阶---Python中的socket编程
初识socket编程 一.前言 socket基于C\S架构(客户端\服务端)的编程模型,在Python中是以socket模块存在的. Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是 ...
随机推荐
- 页面插入Flash方式
法一 <!-- 播放Flash动画代码 --> <div class="logoFlash"> <object classid="clsid ...
- C#遍历窗体控件(原文出自http://www.liangshunet.com/ca/201403/286434593.htm)
一.C#遍历窗体控件 主要遍历属于窗体(Form)的控件(Controls),假如窗体中有 Panel.Button 和 TextBox 控件,遍历代码如下: /// <summary> ...
- DOM对象控制HTML无素——详解1
getElementsByName()方法 返回带有指定名称的节点对象的集合. 语法: document.getElementsByName(name) 与getElementById() 方法不同的 ...
- Joomla插件汉化小程序
这两天在搞joomla插件,在看peter的视频,在此谢过他了.看到它汉化插件那个视频.反正闲着无聊,就写了一个Java小程序,方便使用joomla的人汉化插件.这个程序的方法很简单,你只要先运行ou ...
- nginx1.8+php5.6.10 服务器编译安装备忘2015-06
又要重新装一台阿里云服务器.开始想用脚本,但发现脚本的程序版本都比较低 还是手动编译最新版本 开始前 更新服务器到最新版本 #yum makecache #yum update //分区挂数据盘 # ...
- python之正则表达式备忘
一简介:就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C ...
- 怎么用notepad配置来运行C语音环境
想要运行C语言,我们可以用notepad软件来进行编辑,那么怎么用notepad 配置运行c语言开发环境呢? Notepad++是一款很好的编辑器,可以用来开发很多的工具,具体大家请看下文给大家详细讲 ...
- bzoj1563: [NOI2009]诗人小G
Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超过1018,则输出"Too hard to arr ...
- iOS类别(Category)与扩展(Extension)-b
苹果的官方文档 Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最大程度的体现了Objective-C的动态语言特性. #im ...
- PHP调试工具Xdebug安装配置教程
说道PHP代码调试,对于有经验的PHPer,通过echo.print_r.var_dump函数,或PHP开发工具zend studio.editplus可解决大部分问题,但是对于PHP入门学习的童鞋来 ...