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网络编程,希望诸位不吝赐教。请与我联系:jt_2010@hust.edu.cn

转载于:https://my.oschina.net/u/185037/blog/94186

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值