免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3308 | 回复: 7
打印 上一主题 下一主题

新手学习Python报错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-22 17:48 |只看该作者 |倒序浏览
import socket,sys

host=sys.argv[1]
textport=sys.argv[2]

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
try:
        port=int(textport)
except ValueError:
        port=socket.getservbyname(textport,'udp')

s.connect((host,port))
print 'Enter data to transmit: '
data=sys.stdin.readline().strip()
s.sendall(data)
print 'Looking for replies;press Ctrl-C or Ctrl-Break to stop'
while 1:
        buf=s.recv(204
        if not len(buf):
                break
        sys.stdout.write(buf)

运行 ./udp.py  localhost 51423 的时候 报错  报错内容如下:

Enter data to transmit:
asdf
Looking for replies;press Ctrl-C or Ctrl-Break to stop
Traceback (most recent call last):
  File "./udp.py", line 19, in <module>
    buf=s.recv(204
socket.error: [Errno 111] Connection refused

请各位高手指点下buf=s.recv(204 这句话哪有错啊!~    谢谢

论坛徽章:
0
2 [报告]
发表于 2013-04-22 19:19 |只看该作者
自己在code中打上太阳,反而让人更看不懂了。。。

论坛徽章:
0
3 [报告]
发表于 2013-04-22 19:36 |只看该作者
要是我是你,我会这么写,加上一些异常保护:
  1. import socket,sys

  2. host=sys.argv[1]
  3. textport=sys.argv[2]

  4. s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
  5. try:
  6.         port=int(textport)
  7. except ValueError:
  8.         port=socket.getservbyname(textport,'udp')

  9. s.connect((host,port))
  10. print 'Enter data to transmit: '
  11. data=sys.stdin.readline().strip()

  12. #发送数据
  13. try:
  14.     s.sendall(data)
  15. except socket.error, e:
  16.     print 'Error sending data:%s' % e
  17.     sys.exit(1)
  18. print 'Looking for replies;press Ctrl-C or Ctrl-Break to stop'

  19. #清除缓存内容
  20. try:
  21.     s.shutdown(1)
  22. except socket.error, e:
  23.     print 'Error sending data:%s' % e
  24.     sys.exit(1)

  25. #接收数据循环
  26. while True:
  27.     try:
  28.         buf = s.recv(2048) #接收数据
  29.     except socket.error, e:
  30.         print 'Error receiving data:%s' % e
  31.         sys.exit(1)
  32.     if not len(buf):
  33.         break
  34.     sys.stdout.write(buf)
复制代码

论坛徽章:
0
4 [报告]
发表于 2013-04-26 16:26 |只看该作者
本帖最后由 本大王 于 2013-04-26 16:28 编辑

回复 3# ts32767
你好  我就是这么改的代码   可是还是在 这个地方  报错了

     buf=s.recv(2048 )

不知道  这个地方是怎么错了  求教!!!

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
5 [报告]
发表于 2013-04-26 18:54 |只看该作者
回复 1# 本大王


    这个就是服务端没有开

论坛徽章:
0
6 [报告]
发表于 2013-04-27 11:30 |只看该作者
回复 5# jeppeter


    那应该怎么开  我也是刚开始学PYTHON   这个地方就死活报错   

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
7 [报告]
发表于 2013-04-27 11:34 |只看该作者
回复 6# 本大王


    你要有程序在UDP的相应端口处理。 这个就行了,但这里没有看到你的服务程序是怎么写的。

论坛徽章:
0
8 [报告]
发表于 2013-04-27 12:05 |只看该作者
回复 7# jeppeter


    嗯  我也是刚看明白怎么回事   好像是是没开服务端的程序    谢谢你!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP