zoukankan      html  css  js  c++  java
  • python网络连接之tcp通信

    #encoding=utf-8
    # 创建一个 TCP 服务器程序,这个程序会把客户发送过来的字
    # 符串加上一个时间戳(格式:'[时间]数据')返回给客户。
    from socket import *
    from time import ctime

    host = ''
    port = 21567
    bufsiz = 1024
    addr = (host,port)

    # ss = socket() # 创建服务器套接字
    # ss.bind() # 把地址绑定到套接字上
    # ss.listen() # 监听连接
    # inf_loop: # 服务器无限循环
    # cs = ss.accept() # 接受客户的连接
    # comm_loop: # 通讯循环
    # cs.recv()/cs.send() # 对话(接收与发送)
    # cs.close() # 关闭客户套接字
    # ss.close() # 关闭服务器套接字(可选)

    #创建tcp套接字,绑定,监听
    tcpServerSock = socket(AF_INET,SOCK_STREAM)#创建TCP Socket
    #AF_INET 服务器之间网络通信
    #socket.SOCK_STREAM 流式socket , for TCP
    tcpServerSock.bind(addr)#将套接字绑定到地址,
    #在AF_INET下,以元组(host,port)的形式表示地址.
    tcpServerSock.listen(5)#操作系统可以挂起的最大连接数量,至少为1,大部分为5

    while True:
    print 'waiting for connection'
    tcpClientSock, addr2 = tcpServerSock.accept() #接受客户的连接
    #接受TCP连接并返回(conn,address),其中conn是新的套接字对象,
    #可以用来接收和发送数据。
    #address是连接客户端的地址。
    print 'connected from :',addr2

    while True:
    data = tcpClientSock.recv(bufsiz) #接收客户端发来的数据
    if not data:
    break
    tcpClientSock.send('[%s] %s' % (ctime(),data)) #返回给客户端数据
    tcpClientSock.close()
    tcpServerSock.close()

    -------------------------------------------------------------------------

    #encoding=utf-8
    #创建tcp客户端
    # cs = socket() # 创建客户套接字
    # cs.connect(address) # 尝试连接address处的服务器
    # comm_loop: # 通讯循环
    # cs.send()/cs.recv() # 对话(发送/接收)
    # cs.close() # 关闭客户套接字

    from socket import *

    host = 'localhost'
    port = 21567
    bufsize = 1024
    addr = (host,port)

    tcpClientSock = socket(AF_INET,SOCK_STREAM)
    tcpClientSock.connect(addr)#s.connect(address)
    #连接到address处的套接字

    while True:
    data = raw_input('>')
    if not data:
    break
    tcpClientSock.send(data) #像服务端发送数据
    data = tcpClientSock.recv(bufsize) #接收服务端返回的数据
    if not data:
    break
    print data
    tcpClientSock.close()

  • 相关阅读:
    ASCII,Unicode 和 UTF-8
    ASCII,Unicode 和 UTF-8
    043_JVM——JVM是什么鬼啊?他与操作系统是什么关系?
    042_杂谈——编程语言的发展
    042_线程——我们写的代码,为什么我从来没有线程呢?
    041_ssm——/与/*与*.do的区别?
    040_HTTP——为什么会有get与post两种请求?
    039_Servlet——SpringMVC中怎么不见Servlet呢?我们写的Controller都是普通类,Servlet藏到了那里?
    038_JVM——怎么查看对象的内存大小?
    037_JVM——java中的类加载器是怎么运行的?
  • 原文地址:https://www.cnblogs.com/lovely7/p/5830083.html
Copyright © 2011-2022 走看看