博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习笔记(二)网络编程的简单示例
阅读量:6851 次
发布时间:2019-06-26

本文共 1779 字,大约阅读时间需要 5 分钟。

hot3.png

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

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

 

简单的TCP连接

服务器代码如下:

import socketfrom time import ctimesock = 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 socketsock = 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 datasock.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 ctimesock = 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:', addrsock.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 datasock.close()

 

 

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

转载于:https://my.oschina.net/inevermore/blog/388646

你可能感兴趣的文章
jhead命令详解
查看>>
去你的lua和go,哥发现node.js原来才是最爱~
查看>>
OC中initialize方法和init方法的区别
查看>>
一些不可思议的小问题
查看>>
界面间传值
查看>>
3.vsphere client的安装
查看>>
Linux实现最常用的磁盘阵列-- RAID5
查看>>
简单的菜单 menu
查看>>
Android布局之LinearLayout
查看>>
Intellij Idea 2017创建非Maven web项目使用tomcat部署实战
查看>>
工程DHCP配置
查看>>
GIL(全局解释器锁)与互斥锁
查看>>
我的友情链接
查看>>
Git常用操作及分支
查看>>
关于一种求最大公约数的算法的分析与证明
查看>>
微信授权莫名创建用户数据失败的原因
查看>>
网络高手修身
查看>>
JavaWeb综合案例-键盘模拟
查看>>
Android Day03-SQLite数据库操作及ListView详解
查看>>
Looking for APAC Operations IT XML Database Developer in Shenzhen and Hongkong
查看>>