Python Network Programming

@1: 同步网络编程(也就是阻塞方式)

同步网络编程一次只能连接一个客户端。

Server端:

import socket

def debugPrint(name, value):
    print("{0}: {1}".format(name, value))

def server():
    #1:
    server = socket.socket()
    #NOTE: NOT "host = server.gethostname()"
    host = socket.gethostname()
    port = 8080
    #2:
    #NOTE: NOT "server.bind(host, port)" TypeError: bind() takes exactly one argument (2 given)
    server.bind((host, port))
    #3:
    server.listen(3)    #listen()的参数为允许等待的连接数
    while 1:
        #4:
        client, address = server.accept() #accept()会阻塞,直到有客户端连接
        debugPrint("client", client)
        debugPrint("address", address)
        #5:
        client.send("Welcome!")
        client.close()

def main():
    server()

Client端:

import socket
import server

def client():
    #1:
    client = socket.socket()
    host = socket.gethostname()
    port = 8080
    #2:
    client.connect((host, port))
    #3:
    content = client.recv(1024)
    server.debugPrint("From Server", content)

def main():
    client()

@2: 异步网络编程(也就是非阻塞方式)

异步网络编程, 允许多个客户端链接。

异步网络编程有3种实现方法: 分叉(多进程), 多线程,异步IO

分叉方式占据资源,windows不支持分叉; 多线程方式存在同步问题;

时间: 2024-10-15 09:36:26

Python Network Programming的相关文章

《Python Network Programming Cookbook》读书笔记0---前言

最近打算学习python网络开发方面的内容,于是网上找来一本<Python Network Programming Cookbook>电子书做教材,顺便边学边将学到的这容通过博客的形式总结起来与大家分享. 这本书不长,英文原版也只有234页,但涉及面很广,TCP/UDP HTTP/HTTPS FTP SMTP POP3 IMAP CGI均有介绍,依照章节,博文会按如下9个部分介绍: 套接字, IPv4,  简单的Client/Server程序 更好的性能:复用套接字 I/O IPv6, UNI

分享:Foundations of Python Network Programming(3rd) 英文版pdf 下载

Foundations of Python Network Programming Third Edition 下载http://www.amazon.com/Foundations-Python-Network-Programming-Brandon/dp/1430258543这本书是2014年底出版的,基于最新的 python3.4 版本.配书源码链接https://github.com/brandon-rhodes/fopnp 目录 Chapter 1: Introduction to C

《Python Network Programming Cookbook》读书笔记1---套接字, IPv4, 简单的Client/Server程序

这一部分主要介绍python中socket模块的相关内容,socket即套接字. socket是使用TCP/IP协议的应用程序通常采用的应用编程接口,它位于运输层和应用层之间,起源于UNIX,由于遵从UNIX“一切皆文件的”思想故socket可看作一种特殊的文件,对其的操作基本可以视为读写I/O.打开.关闭.关于套接字的基本概念@吴秦的Linux Socket编程(不限Linux)写的很详细,大家可以参考. 在下面列出的各个部分中我将先贴出代码,然后对其进行解释. 通过python3获得本机名和

《Python Network Programming Cookbook》读书笔记2---复用socket I/O 实现更好的性能

第二章主要在上一章的基础上介绍了以下内容: 1. ForkingMixIn 2. ThreadingMixIn 3. select.select 4. select.epoll 5. Diesel库 ForkingMixIn 和 ThreadingMixIn属于socketserver(python2是SocketServer)模块,该模块能够简化编写web服务器的工作.其包含四种基本的服务器class: TCPServer 使用TCP协议,在服务器和客户端之间建立持续的连续,安全: UDPSe

TCP 、UDP网络编程作业代写、代写C 语言 TCP程序 Network Programming using C

TCP .UDP网络编程作业代写.代写C 语言 TCP程序Network Programming using COverview? This homework is due by 11:59:59 PM on Thursday, April 26, 2018.? This homework will count as 8% of your final course grade.? This homework is to be completed individually. Do not shar

Professional iOS Network Programming Connecting the Enterprise to the iPhone and iPad

Book Description Learn to develop iPhone and iPad applications for networked enterprise environments The iPhone and iPad have made a powerful impact on the business world. Developers creating iOS apps for the enterprise face unique challenges involvi

【Python Network】使用DOM生成XML

单纯的为DOM树添加结点. 1 #!/usr/bin/env python 2 # Generating XML with DOM - Chapter 8 - domgensample.py 3 4 from xml.dom import minidom, Node 5 6 doc = minidom.Document() 7 8 doc.appendChild(doc.createComment("Sample XML Document - Chapter 8 -")) 9 10 #

Boost.Asio C++ Network Programming翻译的校对稿

Boost.Asio C++ Network Programming翻译的校对稿将发布在gitbook上: 大家有兴趣可以一起来校对 目前校对稿仍然在持续不断的添加中,预计明天会全部校对完毕,届时我会将校对稿以pdf的形式发布到csdn的下载频道中,以方便大家更好的阅读全书. 附上链接地址: https://www.gitbook.com/book/mmoaay/boost-asio-cpp-network-programming-chinese

【learning log】Linux network programming

DNS host entry 包含 DNS database 中有关某一 domin name 或 ip address 的 DNS 信息. 1 struct hostent{ 2 char *h_name; 3 char *h_aliases; 4 int h_addrtype; 5 int h_length; 6 char **h_addr_list; 7 }; hostinfo 程序, 用来从 ip 或 domin name 解析 DNS info. 1 /*This program is