zoukankan      html  css  js  c++  java
  • python socket server

    网络上关于socket的介绍文章数不胜数。自己记录下学习的点点滴滴。以供将来复习学习使用。

    socket中文的翻译是套接字,总感觉词不达意。简单的理解就是ip+port形成的一个管理单元。也是程序中应用程序调用的接口。

    在这里我们就介绍如何启动tcp 的server。

    tcp连接中server部分,启动一个ip和port口,在这个port口监听,当收到client发来的请求,用一个新的端口port2同client建立连接。

    socket启动监听的过程就是:

    创建socket

    bind端口

    开始监听

    建立连接+继续监听

    代码:

    '''
    This is a testing program
    the program is used to start server
    '''
    import socket
    import sys
    
    def start_tcp_server(ip, port):
        #create socket
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        
        server_address = (ip, port)
        #bind port
        print 'starting listen on ip %s, port %s'%server_address
        sock.bind(server_address)
        
        #starting listening, allow only one connection
        try:
            sock.listen(1)
        except socket.error, e:
            print "fail to listen on port %s"%e
            sys.exit(1)
            
        while True:
            print "waiting for connection"
            client,addr = sock.accept()
            print 'having a connection'
            client.close()
            
    if __name__ == '__main__':
        start_tcp_server('10.20.0.20', 12345)
    

     

    在这里有一个常用技巧,在start_tcp_server中,我们最常用到的是本机的ip,为了程序的通用性,最好使用调用函数的方式获取ip地址。

    用到两个函数socket.gethostname与socket.gethostbyname('name')

    ip = socket.gethostbyname(socket.gethostname())

    但是问题是一般情况下得到的ip地址为127.0.0.1。

    如果想使用配置或dhcp获取的ip,如何做?实验当中。

  • 相关阅读:
    C语言练习之计算某年日是该年的第几天
    C语言练习之 猴子吃桃问题
    C语言练习之 求阶乘
    C语言学习(四)
    C语言学习(三)
    C语言学习(二)
    C语言学习(一)
    自定义函数汇总
    #2019121200026 最大子序列和
    #2019121000025-LGTD
  • 原文地址:https://www.cnblogs.com/felixwa/p/6034757.html
Copyright © 2011-2022 走看看