本文实例讲述了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程序设计有所帮助。