Python简单网络编程示例【客户端与服务端】


Posted in Python onMay 26, 2017

本文实例讲述了Python简单网络编程。分享给大家供大家参考,具体如下:

内容目录

1. 客户端(client.py)
2. 服务端(server.py)

一、客户端(client.py)

import socket
import sys
port = 70
host = sys.argv[1]
filename = sys.argv[2]
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
fd = s.makefile("rw", 0)
fd.write(filename + "\n")
for line in fd.readlines():
  sys.stdout.write(line)

程序通过socket.socket()建立一个Socket,参数告诉系统需要一个Internet Socket进行TCP通信。接着程序链接远程的主机名,并提供文件名。最后获得响应后在屏幕上打印出来。

测试

python client.py quux.org /

显示

iWelcome to gopher at quux.org! fake  (NULL) 0
i  fake  (NULL) 0
iThis server has a lot of information of historic interest, fake  (NULL) 0
ifunny, or just plain entertaining -- all presented in Gopher. fake  (NULL) 0
iThere are many mirrors here of rare or valuable files with the fake  (NULL) 0
iaim to preserve them in case their host disappears. PLEASE READ  fake  (NULL) 0
i"About This Server" FOR IMPORTANT NOTES AND LEGAL INFORMATION. fake  (NULL) 0
i  fake  (NULL) 0
0About This Server /About This Server.txt gopher.quux.org 70 +
1Archives  /Archives  gopher.quux.org 70 +
1Books /Books gopher.quux.org 70 +
1Communication /Communication gopher.quux.org 70 +
iThis directory contains the entire text of the book  fake  (NULL) 0
i"We the Media: Grassroots Journalism by the People, for the People"  fake  (NULL) 0
iby Dan Gillmor in various formats. fake  (NULL) 0
i  fake  (NULL) 0
iFeel free to download and enjoy.  fake  (NULL) 0
1Computers /Computers gopher.quux.org 70 +
1Current Issues and Events (Updated Apr. 23, 2002) /Current  gopher.quux.org 70 +
1Development Projects  /devel gopher.quux.org 70 +
0Gopher's 10th Anniversary /3.0.0.txt gopher.quux.org 70
1Government, Politics, Law, and Conflict  /Government gopher.quux.org 70 +
0How To Help  /How To Help.txt  gopher.quux.org 70 +
1Humor and Fun /Humor and Fun gopher.quux.org 70 +
1Index to Quux.Org /Archives/index gopher.quux.org 70
1Internet  /Internet  gopher.quux.org 70 +
1Other Gopher Servers  /Software/Gopher/servers  gopher.quux.org 70
1People /People gopher.quux.org 70 +
1Reference /Reference gopher.quux.org 70 +
1Software and Downloads /Software  gopher.quux.org 70 +
1The Gopher Project /Software/Gopher  gopher.quux.org 70
0What's New /whatsnew.txt  gopher.quux.org 70 + 

二、服务端(server.py)

# coding: utf-8
import socket
host = ''
port = 51421
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(1)        #每次最多只有一个等候处理
print "Server is running on port %d; press Ctrl-C to terminate." %port
while 1:
  clientsock, clientaddr = s.accept()
  clientfile = clientsock.makefile('rw', 0)
  clientfile.write("Welcome, " + str(clientaddr) + "\n")
  clientfile.write("Please enter a string: ")
  line = clientfile.readline().strip()
  clientfile.write("You entered %d characters. \n" %len(line))
  clientfile.close()
  clientsock.close()

建立一个socket,设置成可复用的(reusable),绑定端口号51421(可选大于1024的任一值),调用listen()函数,开始等待来自客户端的请求,同时设定最多只有一个等候处理的链接。

主循环对a.accept()函数调用开始,程序连接一个客户端后立马停止,接收用户的输入。

运行一个例子

首先运行server.py

python server.py

另开一个终端,连接localhost的51421端口。 

jihite@ubuntu:~/web$ telnet localhost 51421
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Welcome, ('127.0.0.1', 59853)
Please enter a string: mm
You entered 2 characters.
Connection closed by foreign host.

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python回溯法实现数组全排列输出实例分析
Mar 17 Python
python提取页面内url列表的方法
May 25 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
Python文件操作之合并文本文件内容示例代码
Sep 19 Python
Python标准库inspect的具体使用方法
Dec 06 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
Python Pywavelet 小波阈值实例
Jan 09 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
使用tensorflow根据输入更改tensor shape
Jun 23 Python
Python 如何实现访问者模式
Jul 28 Python
Python编程对列表中字典元素进行排序的方法详解
May 26 #Python
利用Python实现网络测试的脚本分享
May 26 #Python
python 如何快速找出两个电子表中数据的差异
May 26 #Python
详解Python3操作Mongodb简明易懂教程
May 25 #Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 #Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 #Python
Python win32com 操作Exce的l简单方法(必看)
May 25 #Python
You might like
PHP取余函数介绍MOD(x,y)与x%y
2014/05/15 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
js 操作符实例代码
2009/10/24 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
js实现小时钟效果
2020/03/25 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
python字典基本操作实例分析
2015/07/11 Python
Python如何快速实现分布式任务
2017/07/06 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
Python实现的堆排序算法示例
2018/04/29 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
Linux开机引导的步骤是什么
2015/10/19 面试题
大四毕业生学习总结的自我评价
2013/10/31 职场文书
写给女生的道歉信
2014/01/08 职场文书
手机被没收的检讨书
2014/10/04 职场文书
民事辩护词范文
2015/05/21 职场文书
党支部鉴定意见
2015/06/02 职场文书
旅游投诉信范文
2015/07/02 职场文书
《风筝》教学反思
2016/02/23 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
Python入门之基础语法详解
2021/05/11 Python
MySQL 存储过程的优缺点分析
2021/05/20 MySQL
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
2021/05/29 MySQL
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫