Python论坛  - 讨论区

标题:python socket通讯问题

马

2011年12月05日 星期一 17:02

现在用socket想做一个简单的网络程序,实现server和client之间的通信,连接后,client向server发送消息,server返回相应的信息,我的代码入下:

服务器端:

#!/usr/bin/env python

#File:server.py

import socket

if __name__ == "__main__":

    s = socket.socket()

    address=('localhost',12345)

    s.bind(address)

    s.listen(5)

 

    while True:

        c, addr = s.accept()

        print 'Got connection from',addr

        c.send('connect successful with server')

        word=c.recv(1025)

        c.send(word+' too')

    c.close()

---------------------------------------------------------

客户端:

#!/usr/bin/env python

#client.py

import socket

if __name__ == "__main__":

    s = socket.socket()

    address=('127.0.0.1',12345)

    s.connect(address)

    print s.recv(1024)

 

    while(True):

        word=raw_input('>>')

        if not word:

            continue

        else:

            s.send(word)

            print s.recv(1027)

            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

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

 

2011年12月06日 星期二 14:06

s.close()

2011年12月08日 星期四 21:31

程序需要退出,退出时才关闭socket

while 1 :

        word=raw_input('>>')

        if word=='q' or word=='quit':

            s.close()

        else:

            s.send(word)

            print s.recv(1027)

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号