2017-01-12 9 views
-3
while(i<=9): 
     proto_actual=lista[i][0] 
     puerto_actual=lista[i][1] 
     if("UDP" in proto_actual): 
      udp1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
      udp1.sendto("toc,toc", (host,int(puerto_actual))) 
      udp1.close() 
      i=i+1 
     else: 
      tcp1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
      print "Socket creado" 
      tcp1.sendto("toc,toc", (host,int(puerto_actual))) 
      tcp1.close() 
      print "hola" 
      i=i+1 

Любое тело может мне помочь? Я получил это:принуждение к Unicode: нужна строка или буфер, найден кортеж. Кто-нибудь?

File "cliente.py", line 43, in <module> 
    udp1.sendto("toc,toc"+ (host,int(puerto_actual))) 
TypeError: cannot concatenate 'str' and 'tuple' objects 

и я не вижу никаких проблем с кодом. Я делаю программу, такую ​​как поршень. Спасибо!

+0

Сколько аргументов принимает 'udp1.sendto'? –

+2

Кажется, вы поставили неправильный код, о котором идет речь, - нет «toc, toc» + (host, int (puerto_actual) », как показывает ошибка. Или вы запускаете другой код, чем вы думаете. – furas

ответ

2

Это связано с ошибкой в ​​строке, которую вы не использовали здесь, или может быть опечаткой в ​​коде, который вы используете (но в конечном итоге исправил его при совместном использовании здесь). Как сказано в сообщении об ошибке, проблема с линией:

udp1.sendto("toc,toc"+ (host,int(puerto_actual))) 
#     ^replace with , 

Здесь "toc,toc" + означает, что вы хотите, чтобы сцепить str с объектом кортежа (host,int(puerto_actual), который не является законной операцией. Чтобы исправить это, замените + запятой ,