我正在创建一个与Python 2.7和Windows中的IP Messenger相同的Messenger.
我想要与IP Messenger用于查找通过LAN运行相同软件的系统相同的功能,但我无法理解该技术.
有人可以帮我解决使用Python 2.7和套接字库在LAN上查找运行相同软件的计算机IP地址或主机名的问题.
请提出一些可以在Windows上实现的内容,而不是像Nmap(仅限于Linux),如果解决方案是Python的套接字库代码,那将非常有用.
我正在尝试学习一些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网络编程。我正在阅读 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) 这是我的代码:
# 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) 我正在尝试通过 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的新手。我想获取系统的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) 我想在运行测试之前检查api和app是否正在运行.我知道我可以使用CLI获取开放端口列表
sudo lsof -iTCP -sTCP:LISTEN -n -P
但我想写一个python脚本来做到这一点.关于我应该使用什么库或者我该怎么做的任何想法?
当我尝试使用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) 我正在编写一个程序,将数据从服务器连续发送到客户端。在这里,我使用时间戳作为示例,将其发送到连接的多个客户端。我已经使用多线程来支持多个客户端。我希望每 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) 我正在构建一个多人游戏,所以一旦服务器启动我想连续广播服务器名称,以便客户端可以知道有一些服务器正在运行.我不想给IP地址和端口号连接到服务器.有人可以帮我广播服务器名称.
python ×10
python-sockets ×10
sockets ×7
python-3.x ×3
http ×1
ip ×1
lan ×1
networking ×1
port ×1
python-2.7 ×1
socketserver ×1
tcp ×1
tcplistener ×1
udp ×1