zoukankan      html  css  js  c++  java
  • Python网络编程之TCP服务器客户端(二)

      传输控制协议(官方术语为TCP/IP协议)是互联网的重要组成部分。TCP的第一个版本是在1974年定义的,它建立在网际层协议(IP)提供的数据包传输技术之上。TCP使得应用程序可以使用连续的数据流进行相互通信,除非出现网络原因导致连接中断等意外情况,否则TCP都能保证数据流完整的传输给接收方,而不会发生丢包、重包或乱序的问题。

      传输文档和文件的协议几乎都是使用TCP的,这包括通过浏览器浏览网页、文件传输以及用于电子邮件传输的所有主要机制。TCP协议是双向通信的,需要先建立连接然后才能互相通信。其中涉及到一些通信、网络相关方面的知识,这里不进行详细解释,如果不大了解,请自行去查看有关资料。

      TCP服务器的建立可以归纳如下:(1).开启套接字(socket);(2).绑定服务端口;(3).开始监听;(4).等待客户端连接;(5).和客户端对话。TCP服务器源程序代码如下所示:

     1 #!/usr/bin/env python
     2 # coding=utf8
     3 
     4 from socket import *
     5 
     6 host = ''
     7 port = 12345
     8 bufsiz = 1024
     9 
    10 tcpSerSock = socket(AF_INET, SOCK_STREAM)   # 开启套接字
    11 tcpSerSock.bind((host, port))               # 绑定服务端口
    12 tcpSerSock.listen(5)                        # 开始监听
    13 
    14 while True:
    15     print 'Please waiting for connection...'      # 等待客户端连接
    16     tcpCliSock, addr = tcpSerSock.accept()
    17     print '...connected from:', addr
    18 
    19     while True:
    20         data = tcpCliSock.recv(bufsiz)      # 接收客户端信息
    21         if not data:
    22             break
    23         tcpCliSock.send('[%s] %s' % ("You send:", data))    # 给客户端发送信息
    24     tcpCliSock.close()
    25     
    26 tcpSerSock.close()

    运行结果如下所示:

    Please waiting for connection...

      TCP客户端的创建可总结如下:(1).开启套接字(socket);(2).连接服务器;(3).开始对话。TCP客户端源程序代码如下所示:

     1 #!/usr/bin/env python
     2 # coding=utf8
     3 
     4 from socket import *
     5 
     6 host = 'localhost'
     7 port = 12345
     8 bufsiz = 1024
     9 
    10 tcpCliSock = socket(AF_INET, SOCK_STREAM)    # 开启套接字
    11 tcpCliSock.connect((host, port))             # 连接到服务器
    12 
    13 while True:
    14     data = raw_input('> ')      # 等待输入
    15     if not data:
    16         break
    17     tcpCliSock.send(data)       # 发送信息
    18     response = tcpCliSock.recv(bufsiz)       # 接受返回信息
    19     if not response:
    20         break
    21     print response
    22 
    23 tcpCliSock.close()

    执行客户端源程序文件,可知:需要我们输入信息,才能显示返回信息;而回过头再看一下服务端的运行结果,显示结果如下所示:

    Please waiting for connection...
    ...connected from: ('127.0.0.1', 52089)

    注意:运行结果中的52089在不同情况下的显示是不一样的。接着,我们来验证一下客户端接收返回信息的功能,例如向客户端源程序执行结果中输入:Welcome to visit elijah7i's blog ! 

    运行结果如下所示:

    > Welcome to visit elijah7i's blog !
    [You send:] Welcome to visit elijah7i's blog !
    > 
  • 相关阅读:
    UICollectionView
    UIDynamicPPT
    05-UIDynamic
    键盘处理return key-工具条
    源代码管理工具 git
    源代码管理工具
    核心动画09-CATransition转场动画
    核心动画06-时钟(了解)
    Intersect,Minus,union all 和union的区别
    freemarker大于,小于 gt,lt 的用法
  • 原文地址:https://www.cnblogs.com/mix88/p/6185048.html
Copyright © 2011-2022 走看看