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下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
python中字典按键或键值排序的实现代码
Aug 27 Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 Python
python小白学习包管理器pip安装
Jun 09 Python
django Model层常用验证器及自定义验证器详解
Jul 15 Python
Python远程linux执行命令实现
Nov 11 Python
matplotlib更改窗口图标的方法示例
Feb 03 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 Python
Django rest framework如何自定义用户表
Jun 09 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
无线电的诞生过程
2021/03/01 无线电
基于mysql的bbs设计(二)
2006/10/09 PHP
php实现paypal 授权登录
2015/05/28 PHP
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
关于Django Models CharField 参数说明
2020/03/31 Python
Python 防止死锁的方法
2020/07/29 Python
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
人工作失职检讨书
2015/05/05 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
pandas中关于apply+lambda的应用
2022/02/28 Python
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android
从原生JavaScript到React深入理解
2022/07/23 Javascript