注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Dragonfly

人生若只如初见

 
 
 

日志

 
 

Python初学socket编程之:python中s.recv抓到的数据空  

2016-12-26 15:29:10|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

#!/usr/bin/python

# -*- coding: UTF-8 -*-

 

import socket

import sys, time

 

 

host = 'www.baidu.com'

port = 80

 

#create an AF_INET(Internet),STREAM socket(TCP)

#函数 socket.socket 创建一个 socket,返回该 socket 的描述符。

#该函数带有两个参数:

#Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信)

#Type:套接字类型,可以是 SOCKET_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCKET_DGRAM(数据报套接字,主要用于 UDP 协议)

try:

         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

         print 'Socket_STREAM'

except socket.error:

         print 'Failed' + msg[1]

         sys.exit();

print 'socket Created'

 

#get server IP

#Python 提供了一个简单的函数 socket.gethostbyname 来获得远程主机的 IP 地址

 

try:

         remote_ip = socket.gethostbyname(host)

         print 'Get Server IP sucess'

except socket.gaierror:

         print 'hostname could not be resolved. Exiting'

         sys.exit()

        

print 'IP address of ' + host + ' is ' + remote_ip

 

#connected to server

#使用函数connect连接到host服务器的指定端口port上

s.connect((remote_ip, port))

 

print 'Socket Connected to ' + host + ' on ip ' + remote_ip

 

# send data to remote server

 

message = "GET / HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n"

 

try:

         s.sendall(message)

except socket.error:

         print 'send failed'

         sys.exit()

 

print 'Message send successfully'

 

time.sleep(10)

# receive data

reply = s.recv(655350)

print 'sss'

print len(reply)

print reply

print '4444'

 

# close socket

 

s.close()

 

遇到的问题:

python中s.recv抓到的数据空

D:\work\python\study>socket_client.py

Socket_STREAM

socket Created

Get Server IP sucess

IP address of www.baidu.com is 103.235.46.39

Socket Connected to www.baidu.com on ip 103.235.46.39

Message send successfully

sss

0

 

4444

解决方法:

Request 消息格式错误。改为后message = "GET / HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n"成功

运行结果:

D:\work\python\study>socket_client.py

Socket_STREAM

socket Created

Get Server IP sucess

IP address of www.baidu.com is 103.235.46.39

Socket Connected to www.baidu.com on ip 103.235.46.39

Message send successfully

sss

15363

HTTP/1.1 200 OK

Date: Mon, 26 Dec 2016 06:27:30 GMT

Content-Type: text/html

Content-Length: 14613

Last-Modified: Wed, 21 Dec 2016 02:18:00 GMT

Connection: Keep-Alive

Vary: Accept-Encoding

Set-Cookie: BAIDUID=E508D6AF2B6CB95F29A774D189AFD364:FG=1; expires=Thu, 31-Dec-3

7 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com

Set-Cookie: BIDUPSID=E508D6AF2B6CB95F29A774D189AFD364; expires=Thu, 31-Dec-37 23

:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com

Set-Cookie: PSTM=1482733650; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=214748

3647; path=/; domain=.baidu.com

P3P: CP=" OTI DSP COR IVA OUR IND COM "

Server: BWS/1.1

X-UA-Compatible: IE=Edge,chrome=1

Pragma: no-cache

Cache-control: no-cache

Accept-Ranges: bytes

 

<!DOCTYPE html><!--STATUS OK-->

…………

 

原理:需要学习HTTP1.1请求方法

  评论这张
 
阅读(13)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017