码迷,mamicode.com
首页 > 编程语言 > 详细

Python Socket编程小结

时间:2015-06-27 21:19:24      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

1、客户端连接

  客户端连接有4个步骤:

    (1)建立一个socket对象

        Socket=socket.socket(family,type)

    (2)使用socket的connect方法连接服务器

        Socket.connect((host,port))

      其中,host是服务器的IP地址,如果只是知道服务器的域名,可以通过host = socket.gethostbyname( hostname )获得。

         port是服务器开启的端口号,通过port=socket.getservbyname(servicename[,protocolname])来查找服务信息,该函数将互联网服务名称和协议的名称翻译为端口号。protocolname为协议名称,如果有,应该是“TCP”或“UDP”,否则,任何协议都将匹配。

    (3)客户端和服务器通过send和recv方法通信。

    (4)客户端通过调用socket的close方法来关闭连接。

 

2、服务器连接

  建立服务器连接有6个步骤:

    (1)建立socket对象;

    (2)将socket绑定到指定地址上,s.bind(("IP",port))

    (3)侦听连接,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方法在接受数据时会进入 ‘blocket‘状态,最后返回一个字符串,用它来表示收到的数据。如果发送的量超过recv所允许,数据会被截断。多余的数据将缓冲于接受端。以后调 用recv时,多余的数据会从缓冲区删除。

    (6)传输结束,服务器调用socket的close方法以关闭连接。

 

参考资料:

  1、http://www.jb51.net/article/52078.htm

Python Socket编程小结

标签:

原文地址:http://www.cnblogs.com/acode/p/4604623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!