python网络编程——简单例子

简介:

客户端(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,如需转载请自行联系原作者

相关文章
|
29天前
|
运维 监控 数据可视化
Python 网络请求架构——统一 SOCKS5 接入与配置管理
通过统一接入端点与标准化认证,集中管理配置、连接策略及监控,实现跨技术栈的一致性网络出口,提升系统稳定性、可维护性与可观测性。
|
4月前
|
机器学习/深度学习 算法 量子技术
GQNN框架:让Python开发者轻松构建量子神经网络
为降低量子神经网络的研发门槛并提升其实用性,本文介绍一个名为GQNN(Generalized Quantum Neural Network)的Python开发框架。
105 4
GQNN框架:让Python开发者轻松构建量子神经网络
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
261 102
|
2月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
295 104
|
2月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
247 103
|
2月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
186 82
|
24天前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
26天前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
153 3
|
26天前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
354 3
|
1月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
238 3

推荐镜像

更多