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. python面试经典315

    期待的是可以检验自己学习的成功:苦逼的是怎么又有东西没记住,但我们依然每天坚持一遍.一遍又一遍指导记住为止. 第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Pyt ...

  2. xCode中去除“Implicit declaration of function 'sysctl' is invalid in C99” 警告

    http://blog.csdn.net/dreambegin/article/details/8609121 一般出现该问题是因为通过C调用了unix/linux 底层接口,所以需要调整c语言的编译 ...

  3. Xen虚拟化技术中PV和HVM的区别

    转自 这里 Xen是一个开源的type-1或者裸机管理程序,它使得一个物理主机能够同时并行运行多个相同的或者不同的操作系统实例.Xen是目前唯一的开源可得的type-1管理程序.Xen被应用于许多商业 ...

  4. python3使用urllib获取set-cookies

    #!/usr/bin/env python # encoding: utf-8 import urllib.request from collections import defaultdict re ...

  5. 如何配置openjdk的 java home

    https://blog.csdn.net/redmoon729/article/details/51671354

  6. 我从16ASPX上下了一个程序在运行时出错是怎么回事?运行时出现用户SA登陆失败,但是我已经把数据库导入SQL

    如果你账号密码正确,那你可能没有打开你的管线服务,或者没有配置好你的客户端

  7. JDK7集合框架源码阅读(二) LinkedList

    基于版本jdk1.7.0_80 java.util.LinkedList 代码如下 /* * Copyright (c) 1997, 2011, Oracle and/or its affiliate ...

  8. (1)请求web

    用来测试api的例子 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...

  9. vue插槽slot的理解与使用

    一.个人理解及插槽的使用场景 刚开始看教程我的疑惑是为什么要用插槽,它的使用场景是什么,很多解释都是“父组件向子组件传递dom时会用到插槽”,这并不能很好的解决我的疑惑.既然你用了子组件,你为什么要给 ...

  10. Java 继承问题 -- 子类是否继承父类的私有属性

    理解一: 子类会继承父类的所有属性和方法,至于能不能直接访问,那就是访问权限的问题了. 例如:父类有个private String name; 属性.子类会继承下来,但子类访问不了,因为是privat ...