标签: python-sockets

使用Python在LAN上查找实时节点

我正在创建一个与Python 2.7和Windows中的IP Messenger相同的Messenger.

我想要与IP Messenger用于查找通过LAN运行相同软件的系统相同的功能,但我无法理解该技术.

有人可以帮我解决使用Python 2.7和套接字库在LAN查找运行相同软件的计算机IP地址或主机名问题.

请提出一些可以在Windows上实现的内容,而不是像Nmap(仅限于Linux),如果解决方案是Python的套接字库代码,那将非常有用.

python ip networking lan python-sockets

5
推荐指数
1
解决办法
2万
查看次数

Python请求,如何为每个请求绑定到不同的源IP?

我正在尝试学习一些python,我在测试中遇到了逻辑问题.目前我的代码是以一种方式编写的,即当进程启动时,对source_address的绑定不会改变

import socket
import requests

real_create_conn = socket.create_connection

def set_src_addr(*args):
    address, timeout = args[0], args[1]
    source_address = ('201.X.X.1', 0)
    return real_create_conn(address, timeout, source_address)

socket.create_connection = set_src_addr

r = requests.get('http://www.mywebpage.com/main')
print r.status_code 
if r.status_code == 404
   print "Webpage Down!"

r = requests.get('http://www.mywebpage.com/blog')
print r.status_code 
if r.status_code == 204
   print "Error occured!"
Run Code Online (Sandbox Code Playgroud)

我正在寻找这样的事情

import socket
import requests


While 1: 

      #bind to source address 201.X.X.1
      #Send request to main webpage
      #print result
      time.sleep(300) # 5 minutes

      #bind to source address 201.X.X.12
      #Send request …
Run Code Online (Sandbox Code Playgroud)

python sockets python-sockets python-requests

5
推荐指数
1
解决办法
7035
查看次数

何时/为什么使用 s.shutdown(socket.SHUT_WR)?

我刚刚开始学习python网络编程。我正在阅读 Python 网络编程基础,但无法理解 s.shutdown(socket.SHUT_WR) 的使用,其中 s 是套接字对象。这是使用它的代码(其中 sys.argv[2] 是用户想要发送的字节数,四舍五入为 16 的倍数):

import socket, sys
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

HOST = '127.0.0.1'
PORT = 1060

if sys.argv[1:] == ['server']:
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind((HOST, PORT))
    s.listen(1)
    while True:
        print 'Listening at', s.getsockname()
        sc, sockname = s.accept()
        print 'Processing up to 1024 bytes at a time from', sockname
        n = 0
        while True:
            message = sc.recv(1024)
            if not message:
                break
            sc.sendall(message.upper())  # send it back uppercase
            n += len(message)
            print '\r%d bytes processed …
Run Code Online (Sandbox Code Playgroud)

python sockets network-programming python-sockets

5
推荐指数
1
解决办法
8006
查看次数

尝试从低级套接字服务器发送 HTTP 响应

这是我的代码:

# Process connections

print('Listening on port', port)
while True:
    c, addr = s.accept()
    print("Got connection from", addr)
    msg = "<html></html>"

    response_headers = {
        'Content-Type': 'text/html; encoding=utf8',
        'Content-Length': len(msg.encode(encoding="utf-8")),
        'Connection': 'close',
    }

    response_headers_raw = ''.join('%s: %s\n' % (k, v) for k, v in response_headers.items())

    response_proto = 'HTTP/1.1'
    response_status = '200'
    response_status_text = 'OK' # this can be random

    # sending all this stuff
    r = '%s %s %s' % (response_proto, response_status, response_status_text)
    c.send(r.encode(encoding="utf-8"))
    c.send(response_headers_raw.encode(encoding="utf-8"))
    c.send('\n'.encode(encoding="utf-8")) # to separate headers from …
Run Code Online (Sandbox Code Playgroud)

python sockets http python-sockets

5
推荐指数
1
解决办法
4612
查看次数

为什么Python收不到UDP数据包?

我正在尝试通过 UDP 联系 A/V 设备。我向本地广播 192.168.0.255 发送一个数据包,它会返回有关设备的信息。我可以验证它是否适用于 Wireshark。但是,我从未在 Python 中得到响应,它只是坐在那里:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #Internet, UDP
s.bind(('', 64000))
#s.sendto('0:0',('192.168.0.255',63630))
s.connect(('192.168.0.255',63630));
s.send('0:0')
#s.listen(1)
data,addr = s.recvfrom(1024)
print data
print 'from', addr
Run Code Online (Sandbox Code Playgroud)

我将其从 64000(随机端口)发送到 63630 端口,因此在发送的 64000 端口上进行绑定和接收,然后发送回该端口,应该可以工作,对吗?我是不是少了一步?

python sockets udp python-sockets

4
推荐指数
1
解决办法
6595
查看次数

获取 127.0.1.1 而不是 192.168.1.* ip ubuntu python

我是python的新手。我想获取系统的IP地址。我在局域网中连接。当我使用以下代码获取 ip 时,它显示 127.0.1.1 而不是 192.168.1.32。为什么它不显示 LAN ip。那么我怎样才能得到我的局域网 ip。每个教程仅以这种方式显示。我还通过连接移动热点进行了检查。尽管如此,它显示的是相同的。

import socket    
hostname = socket.gethostname()    
IPAddr = socket.gethostbyname(hostname)    
print("Your Computer Name is:" + hostname)    
print("Your Computer IP Address is:" + IPAddr)    
Run Code Online (Sandbox Code Playgroud)

输出:

Your Computer Name is:smackcoders
Your Computer IP Address is:127.0.1.1
Run Code Online (Sandbox Code Playgroud)

所需输出:

Your Computer Name is:smackcoders
Your Computer IP Address is:192.168.1.32
Run Code Online (Sandbox Code Playgroud)

python sockets python-3.x python-sockets

4
推荐指数
3
解决办法
5170
查看次数

如何使用Python脚本检查特定端口是否正在侦听?

我想在运行测试之前检查api和app是否正在运行.我知道我可以使用CLI获取开放端口列表

sudo lsof -iTCP -sTCP:LISTEN -n -P

但我想写一个python脚本来做到这一点.关于我应该使用什么库或者我该怎么做的任何想法?

python port tcp tcplistener python-sockets

3
推荐指数
1
解决办法
2万
查看次数

while循环中的Python套接字recv数据没有停止

当我尝试使用while loop循环接收数据时,即使没有数据,循环也不会停止

import socket


class Connect:
    connect = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    def __init__(self, server_ip, server_port):
        self.connect.connect((server_ip, server_port))

    def recv(self):
        data_ls = []
        while True:
            data = self.connect.recv(2048)
            if not data: # after getting the first data
                break #    Python wont come to this "if" so it wont break!

            data = data.decode('utf-8')
            data_ls.append(data)
        return data_ls
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-sockets

3
推荐指数
1
解决办法
1万
查看次数

从服务器 python 向客户端发送连续数据

我正在编写一个程序,将数据从服务器连续发送到客户端。在这里,我使用时间戳作为示例,将其发送到连接的多个客户端。我已经使用多线程来支持多个客户端。我希望每 10 秒向客户端发送一次时间。但在我的代码中,客户端在收到第一个数据后停止。如何让客户端持续接收数据。我尝试在客户端添加 while 循环,但它无法实现。有什么建议请

这是示例代码:服务器端:

import socket
import os
from threading import Thread
import thread
import threading
import time
import datetime

def listener(client, address):
    print "Accepted connection from: ", address
    with clients_lock:
        clients.add(client)
    try:    
        while True:
            data = client.recv(1024)
            if not data:
                break
            else:
                print repr(data)
                with clients_lock:
                    for c in clients:
                        c.sendall(data)
    finally:
        with clients_lock:
            clients.remove(client)
            client.close()

clients = set()
clients_lock = threading.Lock()

host = socket.gethostname()
port = 10016

s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host,port))
s.listen(3)
th …
Run Code Online (Sandbox Code Playgroud)

python sockets multithreading python-3.x python-sockets

3
推荐指数
1
解决办法
6801
查看次数

在python中广播套接字服务器

我正在构建一个多人游戏,所以一旦服务器启动我想连续广播服务器名称,以便客户端可以知道有一些服务器正在运行.我不想给IP地址和端口号连接到服务器.有人可以帮我广播服务器名称.

  • 它的应用程序不是Web应用程序.

python sockets socketserver python-2.7 python-sockets

2
推荐指数
1
解决办法
5386
查看次数