客户端(client.py)
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
0
About This Server /About This Server.txt gopher.quux.org
70
+
1
Archives /Archives gopher.quux.org
70
+
1
Books /Books gopher.quux.org
70
+
1
Communication /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
1
Computers /Computers gopher.quux.org
70
+
1
Current Issues and Events (Updated Apr.
23
,
2002
) /Current gopher.quux.org
70
+
1
Development Projects /devel gopher.quux.org
70
+
0
Gopher's
10
th Anniversary /
3.0
.
0
.txt gopher.quux.org
70
1
Government, Politics, Law, and Conflict /Government gopher.quux.org
70
+
0
How To Help /How To Help.txt gopher.quux.org
70
+
1
Humor and Fun /Humor and Fun gopher.quux.org
70
+
1
Index to Quux.Org /Archives/index gopher.quux.org
70
1
Internet /Internet gopher.quux.org
70
+
1
Other Gopher Servers /Software/Gopher/servers gopher.quux.org
70
1
People /People gopher.quux.org
70
+
1
Reference /Reference gopher.quux.org
70
+
1
Software and Downloads /Software gopher.quux.org
70
+
1
The Gopher Project /Software/Gopher gopher.quux.org
70
0
What's New /whatsnew.txt gopher.quux.org
70
+
|
服务端(server.py)
# 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.
|
本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/4504636.html,如需转载请自行联系原作者
