`
san_yun
  • 浏览: 2663701 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

python socket学习

 
阅读更多

python 编写server的步骤:

  1. 第一步是创建socket对象。调用socket构造函数。如:

    socket = socket.socket( family, type )

    family参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信。
    type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字)。

  2. 第二步是将socket绑定到指定地址。这是通过socket对象的bind方法来实现的:

    socket.bind( address )



    由AF_INET所创建的套接字,address地址必须是一个双元素元组,格式是(host,port)。host代表主机,port代表端口号。如果端口号正在使用、主机名不正确或端口已被保留,bind方法将引发socket.error异常。

  3. 第三步是使用socket套接字的listen方法接收连接请求。

    socket.listen( backlog )

    backlog指定最多允许多少个客户连接到服务器。它的值至少为1。收到连接请求后,这些请求需要排队,如果队列满,就拒绝请求。

  4. 第四步是服务器套接字通过socket的accept方法等待客户请求一个连接。

    connection, address = socket.accept()

    调 用accept方法时,socket会时入“waiting”状态。客户请求连接时,方法建立连接并返回服务器。accept方法返回一个含有两个元素的 元组(connection,address)。第一个元素connection是新的socket对象,服务器必须通过它与客户通信;第二个元素 address是客户的Internet地址。

  5. 第五步是处理阶段,服务器和客户端通过send和recv方法通信(传输 数据)。服务器调用send,并采用字符串形式向客户发送信息。send方法返回已发送的字符个数。服务器使用recv方法从客户接收信息。调用recv 时,服务器必须指定一个整数,它对应于可通过本次方法调用来接收的最大数据量。recv方法在接收数据时会进入“blocked”状态,最后返回一个字符 串,用它表示收到的数据。如果发送的数据量超过了recv所允许的,数据会被截短。多余的数据将缓冲于接收端。以后调用recv时,多余的数据会从缓冲区 删除(以及自上次调用recv以来,客户可能发送的其它任何数据)。
  6. 传输结束,服务器调用socket的close方法关闭连接。

python编写client的步骤:

  1. 创建一个socket以连接服务器:socket = socket.socket( family, type )
  2. 使用socket的connect方法连接服务器。对于AF_INET家族,连接格式如下:

    socket.connect( (host,port) )

    host代表服务器主机名或IP,port代表服务器进程所绑定的端口号。如连接成功,客户就可通过套接字与服务器通信,如果连接失败,会引发socket.error异常。

  3. 处理阶段,客户和服务器将通过send方法和recv方法通信。
  4. 传输结束,客户通过调用socket的close方法关闭连接。
    if __name__ == '__main__':  
        import socket  
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
        sock.bind(('localhost', 8001))  
        sock.listen(5)  
        while True:  
            connection,address = sock.accept()  
            try:  
                connection.settimeout(5)  
                buf = connection.recv(1024)  
                if buf == '1':  
                    connection.send('welcome to server!')  
                else:  
                    connection.send('please go out!')  
            except socket.timeout:  
                print 'time out'  
            connection.close()  
    if __name__ == '__main__':  
        import socket  
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
        sock.connect(('localhost', 8001))  
        import time  
        time.sleep(2)  
        sock.send('1')  
        print sock.recv(1024)  
        sock.close()  

 

更多:

http://san-yun.iteye.com/admin/blogs/1616291

分享到:
评论

相关推荐

    python socket

    Python的socket模块是网络编程的基础,它提供了低级的、原始的TCP/IP和UDP套接字接口。在本文中,我们将深入探讨Python中socket的基本...希望本文对你在Python socket学习上有所帮助,也欢迎大神级别的指导,共同进步!

    Python Socket模块实现服务端与客户端通信

    Python Socket模块是网络编程的基础,它提供了...通过这两个文件,我们可以学习如何创建Socket,进行连接、数据交换以及关闭连接。在实际项目中,这些基础概念会被扩展到更复杂的网络应用中,如Web服务器、聊天应用等。

    Python Socket

    通过分析这两份代码,我们可以学习如何在Python中进行实际的Socket通信。 TCP和UDP的选择取决于具体的应用需求。如果你需要可靠的数据传输,不关心额外的延迟和带宽开销,那么TCP是理想选择。反之,如果速度和实时...

    Dos.rar_nine44k_python_python socket_python socket聊天_python聊天室

    总之,"Dos.rar_nine44k_python_python socket_python socket聊天_python聊天室"是一个关于使用Python socket模块创建多人聊天室的项目,它涵盖了网络编程、并发处理和用户交互等多个关键知识点,是学习Python网络...

    基于python的socket实现单机五子棋到双人对战

    通过这个过程,我们将学习到Python中的socket编程基础、多线程处理以及如何设计一个简单的网络应用程序。 #### 技术栈与环境 - **Python版本**:推荐使用Python 3.x。 - **开发工具**:推荐使用PyCharm或VS Code等...

    python socket 石头剪刀布游戏_socket_python_MYSQL_

    在Python编程领域,Socket是用于网络通信的一种基础模块,它允许...总的来说,这个项目涵盖了Python的网络编程、数据库管理和基本的用户交互,是一个很好的学习和实践平台,有助于提升开发者在实际项目中的综合技能。

    python socket局域网聊天与文件传输.zip

    "python socket局域网聊天与文件传输.zip" 这个标题表明了我们讨论的主题是基于Python的socket编程技术,用于构建一个局域网内的聊天和文件传输应用。Socket是网络编程的基础,它允许两个或多个设备通过网络进行通信...

    python socket 网络编程 教程

    Python网络编程教程主要介绍如何使用Python语言开发基于socket的网络应用程序,通过本教程的学习,初学者可以掌握Python在网络编程方面的基础知识和高级特性。本教程采用的示例为聊天程序,旨在通过实例加深对Python...

    Python Socket多人聊天编程

    总之,这个"Python Socket多人聊天编程"项目是学习Python网络编程和多线程应用的一个基础实例,它帮助开发者理解如何利用socket实现基本的客户端-服务器通信,以及如何通过多线程实现并发处理。对于进一步深入研究...

    02.6.利用Python SOCKET多线程开发FTP软件(全6集)

    综上所述,通过本教程系列的学习,不仅可以掌握Python Socket编程的基础知识,还能深入了解多线程技术及其在网络编程中的应用,最终能够独立完成一个功能完备的FTP服务器的开发。这对于提升个人技能、拓宽职业道路都...

    AsyncSocket -Python异步Socket编程代码

    Python异步Socket编程代码,对想学习python socket的人有用

    daili.zip_PYTHON SOCKET5_python_socket5_zip

    标题中的“daili.zip_PYTHON SOCKET5_python_socket5_zip”表明这是一...通过`daili.py`这个脚本,我们可以学习如何在Python环境中创建和使用SOCKET5代理,理解网络通信的底层机制,以及如何处理网络编程中的各种问题。

    python-socket.zip

    Python的socket模块是进行网络通信的基础,它提供了一种低级别的、原始的TCP/IP套接字接口。...这个示例为初学者提供了学习Python网络编程的一个基础起点,同时也为更复杂的网络应用开发提供了思路。

    pythonsocket

    根据提供的标题、描述以及部分内容,本文将围绕Python中的网络编程技术进行深入探讨,重点解析socket模块及相关的高级网络处理库的使用方法与示例。在Python标准库中,socket是进行网络通信的基础,通过它我们可以...

    Python聊天室 (socket tkinter)

    【Python聊天室 (socket tkinter)】是一个基于Python编程语言实现的简单聊天应用程序,它结合了socket库进行网络通信,tkinter库创建图形用户界面(GUI),以及threading库实现多线程来同步处理用户交互和网络活动。...

    Python实现socket非阻塞通讯功能示例

    对于想要深入学习Python网络编程的朋友,文中推荐了多个专题教程,如《Python Socket编程技巧总结》、《Python数据结构与算法教程》等,为读者提供了进一步学习的资源。通过阅读这些教程,读者可以更加深入地理解...

    PyChat.zip_Socket python_python socket_聊天_聊天程序_聊天程序python

    在IT领域,网络通信是不可或缺的一部分,而Python作为一种强大的编程语言,提供了丰富的库来支持这一功能,其中之一就是Socket。...这个项目对于学习网络编程和Python Socket使用是一个很好的实践案例。

    python socket编程实例

    对于Python爱好者来说,掌握socket编程是进阶学习的重要环节。 描述中提到了文档的内容适合“Python爱好者进阶学习”,这说明文档可能会涉及到一些基础概念,并且深入探讨socket编程中的高级应用。例如,文档中可能...

    基于Socket的聊天室Python实现(GUI版)

    资源内容:基于Socket的聊天室Python...使用/学习目标:了解 Socket 核心原理 特点:简单、带GUI方便使用 适用人群:想阅读Python源码的初学者,想自己搭建远程聊天室的站长们 可以参考本资源来搭建属于您的聊天室!

    Python socket客户端实时显示服务端监听摄像头python_socket_video.rar

    在"python_socket_video"这个项目中,开发者已经实现了上述功能,通过解压并运行代码,你可以学习到如何利用Python的socket库进行实时视频流传输。这个项目对于学习网络编程和视频处理具有很高的实践价值。

Global site tag (gtag.js) - Google Analytics