Python中的网络编程比C语言中要简洁很多,毕竟封装了大量的细节。

所以这里不再介绍网络编程的基本知识。而且我认为,从Python学习网络编程不是一个明智的选择。

 

简单的TCP连接

服务器代码如下:

import socket
from time import ctime sock = socket.socket()
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('localhost', 9981))
sock.listen(5) while True:
print 'waiting for connection ...'
peersock, peeraddr = sock.accept()
print '....connected from:', peeraddr while True:
data = peersock.recv(1024)
if not data:
break
peersock.send('[%s] %s' % (ctime(), data)) peersock.close()
sock.close()

注意这里设置了地址复用。

这是一个时间戳服务器,同时server还将用户的输入直接回显过去。

 

客户端的代码如下:

import socket

sock = socket.socket()
sock.connect(('localhost', 9981)) while True:
data = raw_input('> ')
if not data:
break;
sock.send(data)
data = sock.recv(1024)
if not data:
break
print data sock.close()

运行两边的代码,这里贴出客户端的运行结果:

22:56:08 wing@ubuntu python python 2.py                                                1 ↵
> foo
[Tue Nov 11 22:56:10 2014] foo
> bar
[Tue Nov 11 22:56:12 2014] bar
>

 

 

简单的UDP连接

 

服务器代码如下:

from socket import *
from time import ctime sock = socket(AF_INET, SOCK_DGRAM)
sock.bind(('localhost', 9981)) while True:
print 'waiting for message ...'
data, addr = sock.recvfrom(1024)
sock.sendto('[%s] %s' % (ctime(), data), addr)
print '...received from and returned to:', addr sock.close()

 

客户端代码如下:

from socket import *

addr = ('localhost', 9981)
sock = socket(AF_INET, SOCK_DGRAM) while True:
data = raw_input('> ')
if not data:
break;
sock.sendto(data, addr)
data, addr = sock.recvfrom(1024)
if not data:
break
print data sock.close()

 

 

Python中还提供了其他一系列的高级组件,例如TcpServer、ForkingTcpServer和ThreadingTCPServer等,后面会写一篇文章,总结各种网络编程的模型,到时候再去介绍。

Python学习笔记(二)网络编程的简单示例的更多相关文章

  1. python学习笔记11 ----网络编程

    网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...

  2. python学习笔记10 ----网络编程

    网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...

  3. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  4. python学习笔记(二)、字符串操作

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...

  5. Python学习之==>Socket网络编程

    一.计算机网络 多台独立的计算机通过网络通信设备连接起来的网络.实现资源共享和数据传递.在同一台电脑上可以将D盘上的一个文件传到C盘,但如果想从一台电脑传一个文件到另外一台电脑上就要通过计算机网络 二 ...

  6. nodejs学习笔记之网络编程

    了解一下OSI七层模型   OSI层 功能 TCP/IP协议 应用层 文件传输,电子邮件,文件服务,虚拟终端  TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 数据格式化 ...

  7. (10.1)Python学习笔记二

    1.在项目工程中要模块化测试一个开发的功能,在测试通过后交付给项目组其他人员继续开发.要保证代码开发的性能和效率以及可扩展性. 2.项目工程中的文件夹分类要功能模块明确清晰,在python中引入某一个 ...

  8. Python 学习笔记二

    笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...

  9. python学习之路网络编程篇(第二篇)

    新课程知识的引入:python作用域 #python中无块级别作用域 if 1 == 1 : name = 'alex' print(name) for i in range(10): name = ...

随机推荐

  1. 关于Bootstrap 利用radio实现tab切换的一个问题

    1.html代码 <div class="col-sm-10 nav nav-tabs" id="typelist" role="tablist ...

  2. PHP会话控制

         会话控制的思想是指能够在网站中根据一个会话跟踪用户.      PHP的会话是通过唯一的会话ID来驱动的.会话ID是一个加密的随机数字.它由PHP生成,在会话的生命周期中都会保存在客户端.它 ...

  3. Unicode与UTF-8互转(C语言实现) 基本原理

    1. 基础 1.1 ASCII码 我们知道, 在计算机内部, 所有的信息最终都表示为一个二进制的字符串. 每一个二进制位(bit)有0和1两种状态, 因此八个二进制位就可以组合出 256种状态, 这被 ...

  4. objdump

    objdump -h test (show section headers) test.c #include <stdio.h> int main() { static int xxxxx ...

  5. 开始gentoo之旅

    买了一台i7笔记本,dell 15游戏匣7559,老笔记本dell n4030装了gentoo. 用了两天,先用着,再慢慢学内核编译.

  6. 【linux高级程序设计】(第十四章)TCP高级应用 2

    socket多路复用应用 int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct time ...

  7. 【linux高级程序设计】(第十一章)System V进程间通信 4

    共享内存 共享内存主要用于实现进程间大量数据传输. 共享内存的数据结构定义: 系统对共享内存的限制: 共享内存与管道的对比: 可以看到,共享内存的优势: 1.共享内存只需复制2次,而管道需要4次 2. ...

  8. Android 轻松实现后台搭建+APP版本更新

    http://blog.csdn.net/u012422829/article/details/46355515 (本文讲解了在Android中实现APP版本更新,文末附有源码.) 看完本文,您可以学 ...

  9. Codeforces 946G Almost Increasing Array (树状数组优化DP)

    题目链接   Educational Codeforces Round 39 Problem G 题意  给定一个序列,求把他变成Almost Increasing Array需要改变的最小元素个数. ...

  10. 路由器漏洞利用工具RouterSploit

     路由器漏洞利用工具RouterSploit 网络中存在大量的嵌入式设备,如路由器.智能摄像头.这类设备安全防护程度较低.由于这些设备更新不方便,一旦发现漏洞,往往不能及时修复.所以,在网络渗透测试中 ...