Python 网络编程

来源:互联网 发布:ce教程找怪物数组基址 编辑:程序博客网 时间:2024/05/29 04:33

通过socket获取baidu网页

#!/usr/bin/env python# -*- encoding=utf-8 -*-import socket'''通过socket模仿http,获取baidu网页'''s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#AF_INET指定IPv4协议,SOCK_STREAM指定TCP协议s.connect(('www.baidu.com', 80))#连接指定IP及端口,参数是一个tuple# 发送请求数据:s.send('GET / HTTP/1.1\r\nHost: www.baidu.com\r\nConnection: close\r\n\r\n')# 接收数据:buffer = []while True:    # 每次最多接收1k字节:    d = s.recv(1024)    if d:        buffer.append(d)    else:        breakdata = ''.join(buffer)s.close()#关闭socketheader, html = data.split('\r\n\r\n', 1)print header   #打印头信息# 把接收的数据写入文件:with open('baidu.html', 'wb') as f:    f.write(html)#baidu.html就保存到本地了

client与server通过TCP通信

server.py

#!/usr/bin/env python# -*- coding: utf-8 -*-#serverimport socketimport threadingimport timedef tcplink(sock, addr):    print 'Accept new connection from %s:%s...' % addr    # addr是tuple ('127.0.0.1', 56610)    sock.send('Welcome!')    while True:        data = sock.recv(1024)        time.sleep(1)        if data == 'exit' or not data:            break        sock.send('Hello, %s!' % data)    sock.close()    print 'Connection from %s:%s closed.' % addrs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#创建TCP,IPv4的Sockets.bind(('127.0.0.1', 6464))#绑定端口s.listen(5)#监听端口,指定等待连接的最大数量5print 'Waiting for connection...'while True:    sock, addr = s.accept()    #接收一个新连接    t = threading.Thread(target=tcplink, args=(sock, addr))    #创建新线程处理TCP连接    t.start()

client.py

#!/usr/bin/env python# -*- coding: utf-8 -*-# clientimport sockets = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect(('127.0.0.1', 6464))# 建立连接:print s.recv(1024)# 接收欢迎消息:for data in ['Michael', 'Tracy', 'Sarah']:    s.send(data)    # 发送数据:    print s.recv(1024)s.send('exit')s.close()
0 0
原创粉丝点击