博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python网络编程——简单例子
阅读量:6303 次
发布时间:2019-06-22

本文共 3180 字,大约阅读时间需要 10 分钟。

客户端(client.py)

import socketimport sysport = 70host = 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)	0i	fake	(NULL)	0iThis server has a lot of information of historic interest,	fake	(NULL)	0ifunny, or just plain entertaining -- all presented in Gopher.	fake	(NULL)	0iThere are many mirrors here of rare or valuable files with the	fake	(NULL)	0iaim to preserve them in case their host disappears.  PLEASE READ	fake	(NULL)	0i"About This Server" FOR IMPORTANT NOTES AND LEGAL INFORMATION.	fake	(NULL)	0i	fake	(NULL)	00About 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)	0i"We the Media: Grassroots Journalism by the People, for the People"	fake	(NULL)	0iby Dan Gillmor in various formats.	fake	(NULL)	0i	fake	(NULL)	0iFeel free to download and enjoy.	fake	(NULL)	01Computers	/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	701Government, 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	701Internet	/Internet	gopher.quux.org	70	+1Other Gopher Servers	/Software/Gopher/servers	gopher.quux.org	701People	/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	700What's New	/whatsnew.txt	gopher.quux.org	70	+ 

服务端(server.py)

# coding: utf-8import sockethost = ''port = 51421s = 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." %portwhile 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 51421Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.Welcome, ('127.0.0.1', 59853)Please enter a string: mmYou entered 2 characters. Connection closed by foreign host.

  

 

转载地址:http://reyxa.baihongyu.com/

你可能感兴趣的文章
一种基于SDR实现的被动GSM嗅探
查看>>
阿里云ECS每天一件事D1:配置SSH
查看>>
SQL Server 性能调优(性能基线)
查看>>
uva 10801 - Lift Hopping(最短路Dijkstra)
查看>>
[Java Web]servlet/filter/listener/interceptor区别与联系
查看>>
POJ 2312Battle City(BFS-priority_queue 或者是建图spfa)
查看>>
从零开始学MVC3——创建项目
查看>>
CentOS 7 巨大变动之 firewalld 取代 iptables
查看>>
延时任务和定时任务
查看>>
linux下的权限问题
查看>>
教你如何使用Flutter和原生App混合开发
查看>>
Spring Boot 整合redis
查看>>
CSS hover改变背景图片过渡动画生硬
查看>>
JDBC(三)数据库连接和数据增删改查
查看>>
淘宝应对"双11"的技术架构分析
查看>>
ssh
查看>>
订单的子单表格设置颜色
查看>>
Office365 Exchange Hybrid 番外篇 ADFS后端SQL群集(一)
查看>>
9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路...
查看>>
lvs fullnat部署手册(三)rs内核加载toa篇
查看>>