Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
936 views
in Technique[技术] by (71.8m points)

python - how to receive a socket message with an empty data?

i have a socket client and a socket server.

(the server is in python, and is synchroneous.)

sometimes the clients send an empty string. i'm required to identify this situation, and return a response.

with this code, the server just keeps on waiting, and the client's don't get anything in return, unless it sends something mroe "fat" ;)

how can i capture the empty message? is it at all possible?

that's my server code:

import SocketServer

def multi_threaded_socket_server():

    class MyRequestHandler(SocketServer.BaseRequestHandler):
        def handle(self):
            while True:
                print 'waiting for client calls...'
                received = self.request.recv( PACKET_SIZE )
                (handle request... )
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
  • In TCP, there is no such thing as an empty message, so zero means a peer disconnect.
  • In UDP, there is no such thing as a peer disconnect, so zero means an empty datagram.

As you describe a multi-threaded socket server, it would seem to be TCP, in which case your requirement doesn't make sense. You can't send an empty message over TCP. You would have to use a superimposed protocol for everything.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...