免费注册 查看新帖 |

Chinaunix

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

python socket 问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-19 18:13 |只看该作者 |倒序浏览
本帖最后由 enmingma 于 2011-11-19 19:22 编辑

我接触python不久,现在用socket想做一个简单的网络程序,实现server和client之间的通信,连接后,client向server发送消息,server返回相应的信息,我的代码入下
server.py
  1. #!/usr/bin/env python
  2. #server.py
  3. if __name__ == "__main__":
  4.     import socket
  5.     s = socket.socket()
  6.         
  7.     address=('localhost',12345)
  8.     s.bind(address)
  9.         
  10.     s.listen(5)
  11.             
  12.     while True:
  13.         c, addr = s.accept()
  14.         print 'Got connection from',addr
  15.         c.send('thank you for connection')
  16.         word=c.recv(1025)
  17.         c.send(word+' too')
  18.         c.close()
复制代码
client.py:
  1. #!/usr/bin/env python
  2. #client.py
  3. if __name__ == "__main__":
  4.     import socket
  5.    
  6.     s = socket.socket()

  7.     address=('127.0.0.1',12345)
  8.    
  9.     s.connect(address)
  10.     print s.recv(1024)
  11.     while(True):
  12.         word=raw_input('>')
  13.         if not word:
  14.             continue
  15.         else:
  16.             s.send(word)
  17.             print s.recv(1027)
  18.             s.close()
复制代码
我现在的情况是,client第一次发送消息,服务器可以正常返回,第二次发送消息,client就报错退出了,报错如下:
Traceback (most recent call last):
  File "./client.py", line 17, in <module>
    s.send(word)
  File "/usr/local/lib/python2.6/socket.py", line 165, in _dummy
    raise error(EBADF, 'Bad file descriptor')
socket.error: [Errno 9] Bad file descriptor

希望大家给个指点,提示一下也行啊,谢谢了

论坛徽章:
0
2 [报告]
发表于 2011-11-19 19:34 |只看该作者
本帖最后由 lkk2003rty 于 2011-11-19 22:35 编辑

你自己都close了  你怎么能发成?

论坛徽章:
0
3 [报告]
发表于 2011-11-20 08:02 |只看该作者
回复 2# lkk2003rty


    我试过了,把close注释掉也不行啊

论坛徽章:
0
4 [报告]
发表于 2011-11-20 14:21 |只看该作者
回复 3# enmingma


    server端都close掉了  你还能发啥 ?

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
5 [报告]
发表于 2011-11-20 14:37 |只看该作者
while下就close了,当然就1次冷

论坛徽章:
0
6 [报告]
发表于 2011-11-20 18:51 |只看该作者
repeat listen in the while loop

论坛徽章:
0
7 [报告]
发表于 2011-11-21 09:19 |只看该作者
回复 4# lkk2003rty


    server和client端的close()我都试过把他们注释掉,还是不行,我是刚接触python,以前没啥编程基础,还希望这位兄台说的详细点,谢谢了

论坛徽章:
0
8 [报告]
发表于 2011-11-21 09:27 |只看该作者
回复 6# wt133664


    不是很懂,

论坛徽章:
0
9 [报告]
发表于 2011-11-21 11:03 |只看该作者
客户端的s.close()不应该在while循环里,说的应该是这个意思

论坛徽章:
0
10 [报告]
发表于 2011-11-21 11:19 |只看该作者
回复 9# zyd320


    应该不是close的问题,close的各种可能我都试过了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP