python小白一只,请问各位大神,执行以下程序时老是出现以下问题

Traceback (most recent call last):
File "C:\Users\su\Desktop\树莓派\server.py", line 10, in <module>
sock.bind(('202.117.189.31',8964))
File "D:\python\lib\socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 10049]

程序如下:
#coding=gbk
import socket
import threading
import time
import struct
DEFAULTADDR = ('202.117.189.31',8964)

#建立监听端口
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(DEFAULTADDR)
#开始监听
sock.listen(5)

print "Waiting..."
while True:
#建立传输连接
conn,addr=sock.accept()
print "Connection from:",addr
#定义文件信息数据结构
FILEINFO = struct.calcsize('128sI')
while True:
try:
fhead = conn.recv(FILEINFO)#获得文件信息
filename,filesize = struct.unpack('128sI',fhead)
print "Filename",filename.strip('\00')
print "Filesize",filesize
filename = "dup_"+filename.strip('\00')
fp = open(filename,'wb')#本地创建文件
print "Recving..."

#传输文件
restsize = filesize
while True:
if restsize > 1024:
data = conn.recv(1024)
else:
data = conn.recv(restsize)
if not data:break
fp.write(data)
restsize = restsize - len(data)
if restsize <=0:break
fp.close()
print "Recv",filename,"done"
print "-----------------------------------"
except:
print "Connection failed"
conn.close#连接断开,关闭该连接
break

可以根据以下操作步骤执行:

Traceback (most recent call last):
File "C:/Documents and Settings/Administrator/桌面/11", line 10, in <module>
sock.bind(DEFAULTADDR)
File "<string>", line 1, in bind
error: (10049, "Can't assign requested address")
回溯(最近一次调用):
文件“C:/文件和设置/管理/桌面/11”,10号线,在<模块>
sock.bind(DEFAULTADDR)
文件“<字符串>”,1号线,在绑定
错误:(10049,“无法分配请求的地址”)

在IDLE中执行下面代码,中文显示正常:

# -*- coding:utf-8 -*-

st=raw_input("请输入内容")
print st

但在CMD中执行e:\hello.py,则中文会出现乱码

可以看出utf-8和gbk都可以通过编码和解码与unicode进行转换,那么如果utf-8转化为gbk该怎么办呢?首先,utf-8通过解码转化为unicode,然后通过unicode编码转化为gbk。为什么CMD会出现乱码呢?这是因为我们写的py程序是utf-8编码的,通过python程序编译后,也是编译为utf-8编码,而这时cmd是通过gbk进行解析的,gbk解析utf-8,当然会出现乱码了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26
有问题 你的地址有问题
Traceback (most recent call last):
File "C:/Documents and Settings/Administrator/桌面/11", line 10, in <module>
sock.bind(DEFAULTADDR)
File "<string>", line 1, in bind
error: (10049, "Can't assign requested address")
回溯(最近一次调用):
文件“C:/文件和设置/管理/桌面/11”,10号线,在<模块>
sock.bind(DEFAULTADDR)
文件“<字符串>”,1号线,在绑定
错误:(10049,“无法分配请求的地址”)追问

你好,我是小白,能说说怎么修改吗

追答

你的IP址

追问

202.117.189.31

追答

这个不是你的IP地址 这个地址有错 改了地址就对了 我改成000.000.000.00就可以用了!

追问

多谢,我试试哈

追答

还有看另一个回答的 你的追问 127.0.0.1 是可以的

本回答被提问者采纳
第2个回答  2014-08-19
202.117.189.31
不是你的机器的IP地址,也不可能是你的机器IP地址。你需要bind到0.0.0.0上。 能明白吗?

或者是你用ifconfig -a,看一看你机器的IP地址再做BIND追问

不用自己的ip地址吗,用127.0.0.1可以吗?

相似回答