`
GhostFromheaven
  • 浏览: 397049 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Python多线程Socket程序例子

阅读更多
如果没有multitask包,请从http://python-multitask.googlecode.com/files/multitask-0.2.0.zip下载

http://blog.csdn.net/ghostfromheaven/article/details/7061387

server端
from __future__ import with_statement
from contextlib import closing
import socket
import multitask

def client_handler(sock):
    with closing(sock):
        while True:
            data = (yield multitask.recv(sock, 1024))
            if not data:
                break
            yield multitask.send(sock, data)

def echo_server(hostname, port):
    addrinfo = socket.getaddrinfo(hostname, port,
                                  socket.AF_INET,
                                  socket.SOCK_STREAM)
    
    (family, socketype, porot, canonname, sockaddr) = addrinfo[0]
    with closing(socket.socket(family,
                               socketype,
                               porot)) as sock:
        sock.setsockopt(socket.SOL_SOCKET,
                        socket.SO_REUSEADDR, 1)
        sock.bind(sockaddr)
        sock.listen(5)
        while True:
            multitask.add(client_handler((
                        yield multitask.accept(sock))[0]))
                        
if __name__ == '__main__':
    import sys
    hostname = '192.168.2.102'
    port = 1111
    
    if len(sys.argv) > 1:
        hostname = sys.argv[1]
    
    if len(sys.argv) > 2:
        port = int(sys.argv[2])
    
    multitask.add(echo_server(hostname, port))
    
    try:
        multitask.run()
    except KeyboardInterrupt:
        pass


client端测试

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('192.168.2.102', 1111))

sock.send('hello')

data = sock.recv(1024)
sock.close()
print 'Received', repr(data)










分享到:
评论

相关推荐

    Python的Socket连接例子(包含多线程例子)

    本教程将深入探讨Python的Socket连接,特别关注如何实现多线程的Socket服务。我们将基于提供的文件"Server.py"、"Client.py"以及"多线程.py"来讲解相关知识。 首先,让我们了解Socket的基本概念。Socket是操作系统...

    python多线程非阻塞socket

    在Python编程中,多线程和非阻塞的Socket技术是构建高效网络应用程序的关键组成部分。本文将深入探讨如何在Python中实现多线程非阻塞的Socket服务端和客户端,以提升并发处理能力。 首先,让我们理解“多线程”和...

    python使用多线程+socket实现端口扫描

    Python中的多线程和Socket库可以结合使用来实现高效的端口扫描功能。端口扫描是网络安全和系统管理员常用的工具,用于检测远程或本地主机开放的网络端口,从而了解网络服务的状态。 首先,我们来看看如何在Python中...

    多线程和socket例子

    在这个"多线程和socket例子"中,我们将深入探讨这两个概念以及它们如何协同工作以实现客户端与服务器端之间的通信。 首先,让我们来了解多线程。在计算机程序中,一个线程是程序执行的一个单一顺序控制流程。在单...

    使用TCPServer编写(多线程)socket服务

    编写多线程的TCPServer,首先需要导入必要的库,如Python中的`socket`和`threading`库。然后,定义一个服务器类,该类包含初始化方法,用于设置服务器的IP地址和端口号,以及创建套接字。接下来,需要实现一个处理...

    SOCKET+多线程例子

    在IT领域,网络编程是不可或缺的一部分,而Socket和多线程技术则是构建网络应用程序的核心工具。本示例项目"SOCKET+多线程例子"旨在帮助初学者掌握这两个关键概念,以便于创建高效的网络通信应用。 首先,让我们...

    Socket通讯与多线程处理-完整实例

    在本实例中,我们将探讨如何利用Socket进行通信,并结合多线程技术来提升程序的并发处理能力。 Socket,也称为套接字,是网络通信的一种接口,它允许两个运行在不同机器上的进程之间进行数据交换。Socket分为流式...

    python socket 实现服务器与客户端多线程连接

    而socketserver是Python的一个内置库,它在socket基础上添加了多线程或多进程支持,简化了服务器端的编程工作。 实现多线程服务器的关键在于处理并发连接。当一个服务器接收到一个新的客户端连接请求时,通常会创建...

    Python 通过 socket 实现服务端和客户端相互间网络通信的例子

    - 对于性能优化,除了多线程,还可以考虑使用非阻塞I/O(`socket.setblocking(False)`)或异步I/O(如`asyncio`库)。 以上就是使用Python的socket模块实现服务端和客户端之间网络通信的基本原理和关键步骤。实际...

    python socket C-S 模型例子

    在这个例子中,我们将深入探讨如何使用Python Socket实现一个多线程服务器来同时处理多个客户端请求。 首先,让我们从`socketServer.py`开始。在服务器端,你需要导入Python的`socket`和`threading`模块。`socket`...

    python多线程socket编程之多客户端接入

    Python中的多线程Socket编程是实现并发服务器的关键技术,它允许服务器同时处理多个客户端的请求。在Python中,我们可以利用内置的`socket`模块来创建基本的Socket服务器和客户端,但当需要支持多个客户端接入时,...

    网上收集的多个Socket编程经典例子源码

    "多线程Socket阻塞模式下通信的例子.rar"可能包含如何在Java或C#中实现多线程处理Socket通信的代码。 6. **Socket应用实例**: - "socket应用小例程.rar"和"Socket开发资料.rar"可能包含了各种Socket编程的实用...

    python的socket编程

    对于更复杂的场景,如多线程或多进程处理多个客户端连接,可以进一步扩展这些基本示例。同时,结合图形用户界面库可以使程序更加友好易用。掌握了这些基础知识后,开发者就可以根据具体需求开发出功能丰富的网络应用...

    Python多线程套接字编程.docx

    在互联网日益复杂的背景下,套接字作为网络数据交互的基础工具,与Python的多线程特性相结合,能够有效地提高程序的并发处理能力和响应速度。 多线程的概念是指在单个进程中运行多个并发线程,每个线程都有自己的...

    Python Socket编程之多线程聊天室

    本文所讨论的Python Socket编程之多线程聊天室,是指利用Python的Socket编程以及多线程技术,开发一个支持多用户同时在线交流的聊天室应用程序。 在本篇内容中,作者首先介绍了Socket的概念,Socket是计算机网络...

    java_python_socket.zip

    例如,Java可以通过多线程或NIO(非阻塞I/O)处理多个客户端,而Python可以使用异步I/O(如asyncio库)。 在"java_python_socket.zip"压缩包中,应该包含了实现上述Java服务器端和Python客户端代码的文件。为了运行...

    Python简单实现socket信息发送与监听功能示例

    ### Python 实现 Socket 信息发送...在实际生产环境中,为了提高性能和稳定性,通常会采用多线程或多进程的方式处理客户端连接。此外,还可以考虑使用更高级的库如 `asyncio` 来实现异步 I/O 操作,以进一步提升效率。

    Python3 Socket编程

    它可以创建服务器,自动处理来自多个客户端的连接请求,简化了多线程或多进程编程。 以下是一个简单的UDP客户端示例: ```python import socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM...

    python3 socket threading fork 多线程+多进程 简单实例

    总结来说,这个实例展示了如何在Python3中使用Socket、多线程以及日志等工具创建一个简单的文件服务器,能够接收并存储多个客户端上传的文件。通过多线程处理并发请求,提高了服务器的响应能力。注意,虽然示例没有...

Global site tag (gtag.js) - Google Analytics