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()

  

搞定!

时间: 2024-10-10 08:56:51

python - socket - client端指定ip和端口的相关文章

Python Socket Client及Server简单编程

本文主要介绍使用Python语言编写Socket协议Server及Client的简单实现方法. 1. Python Socket编程简介 Socket通常也称作"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 三种流行的套接字类型是:stream,datagram和raw.stream和datagram套接字可以直接与TCP协议进行接口,而raw套接字则接口到IP协议. Python Socket模块提供了对低层BSD套接字样式网络的访问,使用

Python socket编程之构造IP首部和ICMP首部

这两天在做一个实验需要自己构造IP首部,遇到诸多问题,搞了一天终于搞定. 关于socket的介绍网上一大堆,我只记录构造IP头时我遇到的问题.由于没玩过socket构造IP首部,网上找了段代码研究下,无奈代码跑不动,各种问题,网上搜集资料无果,从基础学起,加上自己的脑洞总算解决了. 我想自己构造一个自定义IP头的ICMP回送请求,网上找了段代码,自己改了改,现在长这个样子: 1 import socket 2 import struct 3 def checksum(source_string)

pycharm开发flask指定ip、端口无效

原因分析 是因为使用了pycharm的版本的问题.并不是flask框架本身的问题(不管你是如何设置的flask配置,通过加载config也好,还是通过run的时候传入形参也好,均不影响) 可以很明显的看出上图的问题,虽然我们制定了参数,但是还是不好使. 解决方案 pycharm会自动识别出来你的flask项目(即使你创建项目的时候并没有选择flask框架的模板) 但是在你运行的时候依旧是下图所示,右上角以flask的logo运行的. 我们只需要切换成python模式运行就行啦. 我们只需要切换成

Python socket编程客户端与服务端通信

目标:实现客户端与服务端的socket通信,消息传输. 客户端 客户端代码: from socket import socket,AF_INET,SOCK_STREAM #服务端的ip地址 server_ip = '127.0.0.1' #服务端socket绑定的端口号 server_port = 20000 if __name__ == '__main__': while True: str_msg = input("请输入要发送信息:") if str_msg != "&

socket服务端和客户端

#!/usr/bin/env python#encoding: utf-8import socketdef handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n") client.send("Hello, World") def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREA

python socket模拟游戏开服

python socket服务端 #!/usr/bin/python #-*- coding: utf-8 -*- import socket import os,sys host='127.0.0.1' #监听的IP port=60000       #监听的端口 buffer=1024      #接受的字节数 sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)  #建立socket对象 sock.bind((host,port)) #

Python Socket编程基础篇

Socket网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用打开.读写.关闭模式来操作.socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO.打开.关闭) socket和file的区别: file模块是针对某个指定

python\socket编程2

1 套接字发展史及发展 套接字起源于 20 世纪 70 年代加利福尼亚大学伯克利分校版本的 Unix,即人们所说的 BSD Unix. 因此,有时人们也把套接字称为"伯克利套接字"或"BSD 套接字".一开始,套接字被设计用在同 一台主机上多个应用程序之间的通讯.这也被称进程间通讯,或 IPC.套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的. 基于文件类型的套接字家族 套接字家族的名字:AF_UNIX unix一切皆文件,基于文件的套接字调用的

python tcp服务端-客户端

tcp服务端 #!/usr/bin/python3 # -*-coding:utf-8 -*- from socket import * import time COD = 'utf-8' HOST = '0.0.0.0' # 主机ip PORT = 9999 # 端口号 BUFSIZ = 1024 ADDR = (HOST, PORT) SIZE = 10 tcpS = socket(AF_INET, SOCK_STREAM) # 创建socket对象 tcpS.setsockopt(SOL_