本文实例讲述了Python简单网络编程。分享给大家供大家参考,具体如下:
内容目录
1. 客户端(client.py)
2. 服务端(server.py)
一、客户端(client.py)
1
2
3
4
5
6
7
8
9
10
11
|
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通信。接着程序链接远程的主机名,并提供文件名。最后获得响应后在屏幕上打印出来。
测试
1
|
python client.py quux.org / |
显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# 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
1
|
python server.py |
另开一个终端,连接localhost的51421端口。
1
2
3
4
5
6
7
8
|
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程序设计有所帮助。