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网络编程【一】的更多相关文章

  1. Python 网络编程(二)

    Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...

  2. Python 网络编程(一)

    Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  3. Python学习(22)python网络编程

    Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...

  4. Day07 - Python 网络编程 Socket

    1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...

  5. python网络编程-01

    python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...

  6. 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档

    Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...

  7. Python网络编程基础pdf

    Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...

  8. python 网络编程(Socket)

    # from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...

  9. python 网络编程 IO多路复用之epoll

    python网络编程——IO多路复用之epoll 1.内核EPOLL模型讲解     此部分参考http://blog.csdn.net/mango_song/article/details/4264 ...

  10. 自学Python之路-Python网络编程

    自学Python之路-Python网络编程 自学Python之路[第一回]:1.11.2 1.3

随机推荐

  1. ionic入门之色彩、图标、边距和界面组件:列表

    目录: 色彩.图标和边距 色彩 图标 内边距 界面组件:列表 列表:.list 成员容器:.item .item: 嵌入文本 .item : 嵌入图标 .item : 嵌入头像 .item : 嵌入缩 ...

  2. NOIP2016普及组复赛解题报告

    提高组萌新,DAY1DAY2加起来骗分不到300,写写普及组的题目聊以自慰. (附:洛谷题目链接 T1:https://www.luogu.org/problem/show?pid=1909 T2:h ...

  3. GOLANG 赋值

    基本赋值语法 变量=表达式 var a int;a=1   变量里的元素=表达式 var arr[3] int;arr[0]=1   声明变量类型同时赋值 var 变量 类型=表达式 var arr[ ...

  4. Python之操作Redis、 RabbitMQ、SQLAlchemy、paramiko、mysql

    一.Redis Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.Redis是一个key-value存储系统.和 ...

  5. TCP/IP基础概念及通信过程举例

    TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...

  6. html局部打印

    html页面局部打印的小栗子 只要修改点击打印的按钮和打印的div区域的id就行啦 <!DOCTYPE html> <html> <head> <title& ...

  7. Node聊天程序实例03:chat.js

    作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. chat.j ...

  8. C# 实现HTML转换成图片的方法

    /// <summary>        /// 通过WebBrowser控件来实现从HTML到Bmp图片的生成.        /// </summary>        / ...

  9. 隐藏原生html5 video controls

    隐藏原生html5 video controls 凤凰视频焦点项目mobile html5播放器测试时bug,由于没有用原生的controls而是自己写的custom controls,虽然设置了co ...

  10. Oracle存储过程(转)

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...