我想从配置文件中读取IP地址,并在套接字中使用它进行UDP传输。
import configparser
# read config file and create constants
cfgFile = 'OMC-MT.cfg'
config = configparser.ConfigParser()
config.sections()
config.read(cfgFile)
#print(config.sections())
addr = config['addr']
PC_IP = addr['OSC_IP']
PC_PORT = int(addr['OSC_PORT'])
在socket.bind
中PC_RXsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
PC_RXsock.bind((PC_IP, PC_PORT))
我会收到此错误:
OSError:[Errno 49]无法分配请求的地址
如果我比较读取字符串和手动分配,我发现没有差异:
PC_IP2 = '192.168.2.110'
print (len(PC_IP))
print (len(PC_IP2))
至少它们在打印时看起来相同并且长度相同。 我想它与文本编码有关,但我不知道如何解决它。 我的文本文件保存为utf-8(编辑说)。我使用IDLE / Python 3.4.2。 干杯
OMC-MT.cfg的内容:
[addr]
# IP address and port of OSC device e.g. smartphone or tablet
OSC_IP = 192.168.2.100
OSC_PORT = 54047
# Mastertone IP address
MT_IP=192.168.2.200
MT_PORT=5001
# Computer's IP and UDP ports
# The RX Port must match with TX port set in OSC software
PC_IP = 192.168.2.110
#PC_IP = 192.168.1.26
PC_PORT = 5005
答案 0 :(得分:0)
考虑以下几点:
PC_IP = addr['OSC_IP']
PC_PORT = int(addr['OSC_PORT'])
我想你真的想要:
PC_IP = addr['PC_IP']
PC_PORT = int(addr['PC_PORT'])