python网络编程【一】
TCP/IP 是标准的协议,它可以使用世界范围内的计算机通过Internet或本地的网络通信
1.编写一个TCP客户端程序
#!/usr/bin/env python import socket, sys port = 70
host = sys.argv[1]
filename = sys.argv[2] s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port)) s.sendall(filename+ "\r\n") while 1:
buf = s.recv(2048)
if not len(buf):
break;
sys.stdout.write(buf)
这段代码实现的是Gopher协议,一种Web出现之前在Internet上非常流行的协议。这个程序需要两个命令行参数:主机名和文件名,实现从主机上请求相关文档的功能。
操作很简单,通过调用socket.socket()来建立一个socket,里面的参数告诉系统需要一个Internet socket来进行TCP通信,接着程序连接远程主机并提供文件名。最后获得响应,并把内容打印出来。
运行以下命令:python f:\python\gopherclient.py quux.org /,您将得到Gopher服务器根目录文件列表

2.编写一个服务器端程序
#!/usr/bin/env python
#coding:utf-8 import socket host= '' #主机名设置成空字符串,代表这个服务器可以接受来自任意地方的连接
port = 51423 s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #把socket设置成可复用的(可选)
s.bind((host, port)) #绑定主机和端口号
s.listen(1) #设置一次最多只监听一个连接 print "Server is running on port %d" % port while 1:
clientsock, clientaddr = s.accept() #当客户端连接时,accept会返回两个信息一个客户端socket和客户端ip,端口号
"""
这里使用了一个文件类对象,从客户端读取一个字符串,显示一个应答,最后关闭文件类对象和客户端socket
"""
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()
首先运行服务端,然后在cmd中输入telnet localhost 51423连接服务端,会得到以下结果:

你也许会发现我没有编写telnet协议,但是telnet客户端也能通信。
python网络编程【一】的更多相关文章
- Python 网络编程(二)
Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...
- Python 网络编程(一)
Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- Python学习(22)python网络编程
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- Day07 - Python 网络编程 Socket
1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...
- python网络编程-01
python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...
- 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档
Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...
- Python网络编程基础pdf
Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...
- python 网络编程(Socket)
# from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...
- python 网络编程 IO多路复用之epoll
python网络编程——IO多路复用之epoll 1.内核EPOLL模型讲解 此部分参考http://blog.csdn.net/mango_song/article/details/4264 ...
- 自学Python之路-Python网络编程
自学Python之路-Python网络编程 自学Python之路[第一回]:1.11.2 1.3
随机推荐
- Navigator
Navigator 这是一个简单的例子,用Navigator来跳转页面,页面之间传递参数 (代码是ES6语法写的): import React from 'react'; import { V ...
- Cheatsheet: 2016 08.01 ~ 08.31
.NET Getting Started with ASP.NET Core and VS Code Coding Standard Best Practices In C# Wire – Writi ...
- 【Android】解决新建的xml文件无法正常加载的问题
新建一个xml布局文件,如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm ...
- 隐藏原生html5 video controls
隐藏原生html5 video controls 凤凰视频焦点项目mobile html5播放器测试时bug,由于没有用原生的controls而是自己写的custom controls,虽然设置了co ...
- vs2012配置OpenGL
1.下载glut包: http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 2.将下载的压缩包解压,得到5个文件,如下: ...
- nginx 启动、重启、关闭
一.启动 cd usr/local/nginx/sbin./nginx 二.重启 更改配置重启nginx kill -HUP 主进程号或进程号文件路径或者使用cd /usr/local/nginx/s ...
- 弹层组件-layer
layer是Layui的一个弹层组建,功能强大,总之我很喜欢,下面介绍这个组件的基本用法. 首先如果只需要使用layer而不想使用Layui可以单独下载layer组件包,页面引入jquery1.8以上 ...
- 使用scp命令下载服务器文件
scp -P 7022 admin@ip:/newnow/mysql/backup.sql 7birds.sql -P 指定端口号,默认为22
- python的字符串内建函数
http://www.ziqiangxuetang.com/python/python-strings.html
- python中的动态变量
def make_name(): names = locals() for i in range(1, 10): names['t%s' % i] = i print names['t%s' % i]