`
f002489
  • 浏览: 271547 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

一个简单的python socket编程

阅读更多

http://openexperience.iteye.com/blog/145701   javaeye

 

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. 第四步是服务器套接字通过socketaccept 方法等待客户请求一个连接。

    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方法关闭连接。

下面给个简单的例子:

server.py

python 代码
 
  1. if   __name__  == ' __main__ ':  
  2.     import   socket   
  3.     sock = socket . socket ( socket .AF_INET,  socket .SOCK_STREAM)  
  4.     sock.bind (('localhost', 8001))  
  5.     sock.listen (5)  
  6.     while   True :  
  7.         connection,address = sock.accept ()  
  8.         try :  
  9.             connection.settimeout(5)  
  10.             buf = connection.recv(1024)  
  11.             if  buf == '1':  
  12.                 connection.send('welcome to server!')  
  13.             else :  
  14.                 connection.send('please go out!')  
  15.         except   socket .timeout:  
  16.             print  ' time  out'  
  17.         connection.close ()  


client.py

python 代码
 
  1. if   __name__  == ' __main__ ':  
  2.     import   socket   
  3.     sock = socket . socket ( socket .AF_INET,  socket .SOCK_STREAM)  
  4.     sock.connect(('localhost', 8001))  
  5.     import   time   
  6.     time .sleep(2)  
  7.     sock.send('1')  
  8.     print  sock.recv(1024)  
  9.     sock.close ()  


在终端运行server.py,然后运行clien.py,会在终端打印“welcome to server!"。如果更改client.py的sock.send('1')为其它值在终端会打印”please go out!“,更改time.sleep(2)为大于5的数值, 服务器将会超时。

分享到:
评论

相关推荐

    python socket 网络编程

    在Python中,创建一个socket对象是网络编程的第一步,通常使用`socket.socket()`函数来完成。你可以指定socket的类型,如SOCK_STREAM(对应TCP)或SOCK_DGRAM(对应UDP)。 二、TCP网络编程 1. 创建Socket:首先,...

    一个简单的Python Socket编程示例,包括一个简单的服务器和客户端

    一个简单的Python Socket编程示例,包括一个简单的服务器和客户端。 解释说明: 服务器端代码: 使用 socket.socket() 创建一个新的socket对象 server_socket,参数 socket.AF_INET 表示使用IPv4地址族,socket....

    python的socket编程

    本文将深入探讨如何使用Python进行socket编程,特别是创建一个简单的图形界面socket聊天程序。 #### Socket编程基础 在深入聊天程序之前,我们首先来了解一下socket编程的基础概念。Socket可以分为两种类型:TCP和...

    python socket编程实例

    Python的socket编程实例为开发者提供了一个直观的学习窗口,通过这些实例,开发者可以加深对网络通信和网络协议的理解。掌握socket编程对于那些希望深入学习网络编程的Python爱好者来说,是一个重要的里程碑。

    AsyncSocket -Python异步Socket编程代码

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

    Python socket 编程的例子.rar

    附件是一个简单的 Python socket 编程的例子,包括一个服务器端和一个客户端。 附件代码在实际使用中可能需要进行错误处理和异常管理的增强,以确保程序的健壮性。此外,服务器端代码中的 while True 循环会无限期...

    python socket 网络编程 教程

    这些基础知识将帮助学习者更好地理解网络编程的原理以及Python中socket编程的实现方式。 Python编程语言是通用的,解释性的,并且具有良好的可移植性。Python的解释性允许开发者在不编译代码的情况下直接运行程序,...

    Python 网络编程 python网络编程 socket

    Python 网络编程_python网络编程_socket Python 网络编程是指使用 Python 语言进行网络通信编程,...Python 网络编程是 Python 语言中的一个重要组成部分,提供了许多有用的功能和接口,方便开发者快速实现网络服务。

    python socket编程实例(服务端及客户端)

    Python的socket库是进行网络通信的基础模块,它提供了低级别的、原始的套接字接口,...理解并熟练掌握socket编程是成为合格的网络程序员的基础。通过这个实例,你可以进一步探索网络编程的奥秘,不断拓展自己的技能树。

    使用socket编程模拟滑动窗口协议

    - 1bit滑动窗口是最简单的形式,只允许发送一个数据帧,发送后必须等待接收方确认才能发送下一个。 2. **TCP与滑动窗口**: - TCP提供了面向连接的服务,包括可靠的数据传输和流控,滑动窗口是其流控机制的一部分...

    Python Socket多人聊天编程

    本项目"Python Socket多人聊天编程"是基于Python实现的一个简单的多用户聊天系统,它利用了socket进行数据传输,并通过多线程技术实现了同时处理多个客户端连接的能力。 首先,我们来详细了解一下`socket`模块。...

    Python web与网络编程教程 使用Python进行socket编程 共18页.pdf

    三、Pythonsocket模块3.1、基本的Pythonsocket模块3.2、Socket模块3.3、SocketServer模块前提条件创建和销毁socketSocket地址服务器socket客户机socket流socketI/O数据报socketI/Osocket选项异步I/O四、构建一个...

    Pythonsocket网络编程

    Pythonsocket网络编程 socket编程也叫套接字编程,应用程序可以通过它发送或者接受数据,可对其像打开文件一样打开/关闭/读写等操作. 套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信. 网络套...

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

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

    Python中基础的socket编程实战攻略

    Python提供了socket模块,可以非常方便的进行socket编程。 创建一个server socket 使用socket方法创建一个新的socket,通常提供两个参数,第一个参数是address family, 第二个是socket type。 #create an INET, ...

    python C socket 编程

    理解Python和C的Socket编程是构建网络应用的基础,无论是简单的命令行交互,还是复杂的分布式系统,都能从中受益。通过这些基础知识,你可以创建自己的网络服务器和客户端,实现跨平台的数据交换。在实际项目中,还...

    python.rar_python_python socket_python socket_python编程_socket

    python简介,使用_Python_进行_socket_编程

    Python3 Socket编程

    以下是一个简单的UDP客户端示例: ```python import socket client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_host_post = ('127.0.0.1', 8080) client_data = input("请输入:").encode...

    计算机网络的最终任务,使用Python Socket编程实现一个简单的FTP服务器-简单FTP服务器.zip

    计算机网络的最终任务,使用Python Socket编程实现一个简单的FTP服务器-简单FTP服务器

    python:socket传输大文件示例

    在Python编程中,Socket是网络通信的基本模块,用于实现不同计算机之间的数据传输。本文将深入讲解如何使用Python的Socket库来传输大文件。文件传输在许多应用中都是必不可少的,例如分布式系统、文件共享和备份等。...

Global site tag (gtag.js) - Google Analytics