Python网络编程socket_client客户端

说明:此程序是与我的上一篇博文server一起开发的,他们可以建立TCP连接完成client-server通信。这里使用socket编程实现一个简单的client机。向server发出一个请求,将接收到的信息打印出来。命令行运行脚本时,输入server的host、port及向server请求的文件名称。若server所在的目录下面存在该文件,则将该文件的内容打印出来,否则就显示“404 Not Found!”。

分五步:

1.make a TCP/IP socket object(创建一个socket对象)

2.connect to server machine and port(连接到server的port端口)

3.send message to server over socket(通过socket发送信息到server)

4.receive message from server(接收server发送的响应信息)

5.close socket to send eof to server(关闭socket并向server发送EOF断开TCP/IP连接)

【源程序】

#import socket module
import sys
import socket
import string
serverHost = '127.0.0.1'    #default serverHost 
serverPort = 8000           #default serverPort
filename = 'hello.html'     #default filename
clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

#make a TCP/IP socket object
if len(sys.argv) > 1: 

#serverHost、serverPort、filename from cmd line args 1..n
    serverHost = sys.argv[1]
if len(sys.argv) >2:
    serverPort = string.atoi(sys.argv[2], 10)
if len(sys.argv) >3:
    filename = sys.argv[3]


#Prepare a server socket
clientSocket.connect((serverHost, serverPort))
 
#connect to server machine and port
print "Connected to the server..."

#这里加上'GET /',是为了与浏览器访问形式保持一致(保留server 的兼容性)
data = 'GET /' + filename 

#send message to server over socket  
clientSocket.sendall(data)        
print "Send:", data

#receive message from server:up to 8k
responce = clientSocket.recv(8192)          
print "Received:", responce

#close socket to send eof to server
clientSocket.close()                                 

【运行程序】

与前一篇博文的server程序一起实现TCP/IP连接的网络数据传输。先运行server程序,再运行client程序。client程序运行命令:Web_client.py serverHost serverPort filename 。client请求的文件在Web_server.py文件所在的目录下面存在则会在client端显示文件内容,否则打印“404 Not Found!”。

此程序经过简单的修改可以爬取网页的数据。

初学python网络编程,希望诸位不吝赐教。请与我联系:[email protected]

你可能感兴趣的:(Web,python,socket,网络编程,爬取网页)