python 网络编程,首先我们认识一下socket,什么是socket?相信大家都是有备而来,不赘述,直接看下面。
创建server 只需要六个步骤:
1. 创建socket对象。调用socket构造函数。
sock = socket.socket(family, type)
2. 将socket绑定(指派)到指定地址上,socket.bind(address)
sock.bind(('host', port))
3. 绑定后,必须准备好套接字,以便接受连接请求。
sock.listen(5)
4. 服务器套接字通过socket的accept方法等待客户请求一个连接
ss = sock.accept()
5. 处理阶段,服务器和客户通过send和recv方法通信(传输数据)。
recieve = ss.recv() ss.send(msg)
6. 传输结束,服务器调用socket的close方法以关闭连接。
ss.close() socket.close()
eg:
import socket
sock = socket.socket()
sock.bind(('127.0.0.1',8888))
sock.listen(5)
sc,address = sock.accept()
sc.send('hello i am server')
recvMsg = sc.recv(512)
print recvMsg
sc.close()
sock.close()
--------------------------------------------------------------------------
创建client 客户端只需要四个步骤:
1. 创建一个socket以连接服务器socket=socket.socket(family,type)
sock = socket.socket(family, type)
2. 使用socket的connect方法连接服务socket.connect((host,port))
sock.connet(('host',port))
3. 客户和服务器通过send和recv方法通信。
sock.send(Msg)
sock.recv(512)
4. 结束后,客户通过调用socket的close方法来关闭连接。
sock.close()
eg:
import socket
sock = socket.socket()
sock.connect(('127.0.0.1',8888))
sock.send('hello i am client')
recvMsg = sock.recv(512)
print recvMsg
sock.close()
------------------------------------------------------------------------
模拟一个聊天室的场景,server可以不断地接收来自客户端的连接及信息推送:
accept、recv、send 方法都是阻塞的,因此我们需要借助多线程来实现,代码如下。
#server.py
import socket
import threading
clients = []
class RecvMsg(threading.Thread):
def __init__(self, sock):
threading.Thread.__init__(self)
self.sock = sock
def run(self):
global clients
while True:
msg = self.sock.recv(512)
print msg
for client in clients:
if client != self.sock:
client.send(msg)
def main():
sock = socket.socket()
sock.bind(('127.0.0.1',8888))
sock.listen(5)
while True:
client, address = sock.accept()
print 'a client connected'
if client not in clients:
clients.append(client)
recvMsg = RecvMsg(client)
recvMsg.start()
sock.close()
if __name__ == "__main__":
main()
----------------------------------
#client.py
import socket
import threading
import os
class RecvMsg(threading.Thread):
def __init__(self, sock):
threading.Thread.__init__(self)
self.sock = sock
def run(self):
while True:
recvMsg = self.sock.recv(512)
print recvMsg
def sendMsg(sock):
msg = raw_input()
message = {}
message['id'] = os.getpid()
message['msg'] = msg
print message
sock.send(str(message))
def main():
sock = socket.socket()
sock.connect(('127.0.0.1',8888))
recvMsg = RecvMsg(sock)
recvMsg.start()
while True:
sendMsg(sock)
if __name__ == "__main__":
main()
----------------------------------------------------------------------------
分享到:
相关推荐
Python网络编程在Linux环境下是一个强大的工具,用于构建服务器端应用程序和服务。这个主题涵盖了多个关键知识点,包括基础概念、Python的网络库、套接字编程、并发处理以及在Linux系统中的应用。 1. **网络编程...
Python网络编程基础是入门Python网络应用开发的重要领域,它涵盖了从基本的网络概念到复杂的网络交互技术。在Python中,网络编程主要涉及TCP/IP协议、HTTP协议、套接字编程、Web服务API调用等多个方面。下面将详细...
Python网络编程是现代软件开发中的重要组成部分,它允许开发者创建能够与互联网交互的应用程序,如Web服务器、客户端应用、数据抓取工具等。本资源"PYTHON网络编程基础.pdf"是针对初学者的一份详尽指南,旨在帮助...
python网络编程,适用于网络编程方向的同学,书中采用的是python3的代码。
《Python网络编程基础》这本书是Python开发者学习网络编程的重要资源,尤其适合初学者入门。它涵盖了从基础到高级的各种主题,旨在帮助读者深入理解Python在处理网络通信时的各种技术和概念。 首先,书中会讲解...
Python网络编程是现代软件开发中的重要组成部分,尤其在大数据、云计算和物联网等领域的应用日益广泛。本主题将深入探讨Python在网络编程方面的基础知识和实践技巧。 首先,Python的网络编程主要涉及套接字(socket...
### Python网络编程知识点详解 #### 一、简介 随着互联网技术的发展,“网络编程”已成为软件开发领域中的一个热点话题。目前市场上的应用软件中有超过一半是面向网络的应用,如数据库服务器、游戏、Java Servlets...
python网络编程
《Python网络编程第三版》是一本深入探讨Python网络编程的权威书籍,中文版与英文版双语对照,为读者提供了更多的学习选择。本书主要面向应用开发者,旨在介绍网络编程的基本概念、Python内置的网络编程模块以及一些...
PYTHON网络编程基础.pdfPYTHON网络编程基础.pdfPYTHON网络编程基础.pdfPYTHON网络编程基础.pdfPYTHON网络编程基础.pdfPYTHON网络编程基础.pdfPYTHON网络编程基础.pdf
《Python网络编程基础》是一本面向初学者的英文教程,旨在帮助读者理解并掌握使用Python进行网络编程的基本概念和技术。本书覆盖了从网络协议基础知识到实际应用开发的广泛内容,对于那些想要用Python编写网络应用,...
Python网络编程是一个广泛的领域,它涵盖了使用Python语言进行网络数据传输、服务器开发、客户端应用创建等众多技术。在这个小例子中,我们将深入探讨Python在TCP/IP通信、HTTP协议、套接字编程以及Web服务等方面的...
Python是一种功能十分强大的面向对象编程语言,可以用于编写独立程序、快速脚本和复杂应用的原型。作为一种开源软件,Python可以自由获取,而且非常易学易用。本书是Python语言的经典入门读本,由两名顶尖的Python...
《Python网络编程基础》第一章主要介绍了网络编程的基本概念和客户端与服务器通信的原理。网络编程是利用编程语言实现网络上的数据传输和交互。本章内容包括网络基础知识、Web服务、Email服务、FTP以及多种服务器端...
Python网络编程实现如下功能: 1、服务器端能够同时为100个客户端提供服务; 2、服务器端使用数据库保存用户帐户、密码和email等信息; 3、服务器端提供FTP服务; 4、服务器端提供消息传递功能 5、客户端提供用户...