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,如何做?实验当中。

  • 相关阅读:
    【9901】数塔问题
    【9704】&&【9109】麦森数
    Javascript继承机制的设计思想
    Javascript继承机制的设计思想
    儿子和女儿——解释器和编译器的区别与联系
    Firebug控制台详解
    Firebug控制台详解
    linux 下 自己写的 html文件产生中文乱码问题 解决办法
    linux 下 自己写的 html文件产生中文乱码问题 解决办法
    (译)Objective-C的动态特性
  • 原文地址:https://www.cnblogs.com/felixwa/p/6034757.html
Copyright © 2011-2022 走看看