码迷,mamicode.com
首页 > 编程语言 > 详细

python中的TCP编程学习

时间:2015-07-18 17:08:27      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:tcp编程   python   

今天看了一下关于python的TCP编程。发现思路和其他语言(例如java)思路基本上差不多。

先看客户端。基本步骤如下:

  • 第一步:创建一个socket
  • 第二步:建立连接
  • 第三步:发送数据
  • 第四步:读取从服务器发送过来的数据
  • 第五步:关闭连接
  • 第六步:对收到的数据进行处理

下面为python的TCP编程的客户端程序的一个小例子。java中关于网络编程的博文请看这里

#coding:utf-8
#TCP编程的客户端程序
#编写客户端程序与其它语言(例如java)的思路差不多。如下
#第一步:创建一个socket
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#第二步:建立连接,参数是一个tuple,以访问新浪为例
s.connect((‘www.sina.com.cn‘,80))#80端口是Web服务的标准端口
#第三步:发送数据
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)

下面看服务器端的程序,思路如下

  • 第一步:创建一个socket
  • 第二步:绑定监听的地址和端口,方法bind()只接收一个tuple
  • 第三步:调用listen()方法开始监听端口,传入的参数指定等待连接的最大数量
  • 第四步:服务器程序通过一个永久循环来接收来自客户端,accept()会等待并返回一个客户端的连接
#python中的服务器端的程序,其用来测试的客户端程序为: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)
#第二步:绑定监听的地址和端口,方法bind()只接收一个tuple
s.bind((‘127.0.0.1‘,9999))
#第三步:调用listen()方法开始监听端口,传入的参数指定等待连接的最大数量
s.listen(10)
#第四步:服务器程序通过一个永久循环来接收来自客户端,accept()会等待并返回一个客户端的连接
while True:
    sock,addr=s.accept()
    #创建一个新线程来处理TCP链接
    threading.Thread(target=tcplink,args=(sock,addr)).start()

测试上面的服务器端的程序,我们用一个简单的客户端程序来测试,如下

#为tcpServer服务器端写一个测试的客户端程序
#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编程学习

标签:tcp编程   python   

原文地址:http://blog.csdn.net/u010412719/article/details/46943005

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!