python - socket - client端指定ip和端口


問題描述:

在設備中有3個NI, ip分別為192.168.1.5/6/7。其中本端192.168.1.6同對端192.168.1.10建立了一個tunnel。

我希望測試tunnel連通性, 對端起一個socket server。本段作為client。

但是如果本端client直接連接,使用的源ip為192.168.1.5,端口隨機。

 

我的迷惑在尋找一個指定ip的函數,在看了python的manual document中socket部分看了一遍后,沒有找到這個函數。

隨后我意識到我的一個思維誤區:bind()函數

bind(address)之前作為socket server的一部分,啟動時候使用制動server的ip和端口

但是bind在客戶端一樣的作用。指定socket建立鏈接時使用的ip和端口。

 

代碼:

def start_tcp_client(ip, port):

    #server port and ip
    server_ip = ip
    servr_port = port

    tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    try:
        tcp_client.bind(('192.168.1.6', 11560))
        tcp_client.connect((server_ip, servr_port))
    except socket.error:
        print 'fail to setup socket connection'
    else:
        print 'sending..........'
        tcp_client.sendall("echo message")

        print 'reading...........'
        print tcp_client.recv(1024)
    tcp_client.close()

  

搞定!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM