关于python socket的一些问题

时间:2014-04-24 04:05:54

标签: python sockets

我写了一个关于python socket的示例程序,但是在执行示例程序时我遇到了一些问题。

请帮助查看以下代码并告诉我问题发生的原因?谢谢!

问题描述:   服务器套接字被阻止,只需打印以下信息:

tcpServer listen at: 127.0.0.1:9003

  ('127.0.0.1', 9003)
  127.0.0.1:60541 connect

客户端套接字已被阻止,并且未打印任何信息

代码:  服务器端套接字:

import socket 

HOST='127.0.0.1' 
PORT=9003 
BUFFER=4096 
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

sock.bind((HOST,PORT)) 

sock.listen(0) 
print('tcpServer listen at: %s:%s\n\r' %(HOST,PORT)) 


print sock.getsockname()

while True: 
    client_sock,client_addr=sock.accept() 
    print('%s:%s connect' %client_addr) 
    rf = client_sock.makefile('rb',4)
    wf = client_sock.makefile('wb',4)
    print rf.readlines()
    rf.close()
    client_sock.close()
    wf.write("from server")
    wf.flush()
    wf.close()
sock.close() 

和客户端套接字代码:

import socket 

HOST='127.0.0.1' 
PORT=9003  
BUFFER=4096 

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
sock.connect((HOST,PORT)) 

rf = sock.makefile('rb',4)
wf = sock.makefile('wb',4)


wf.write('hello, tcpServer!') 
wf.flush()
wf.close()

recv=rf.readline()
rf.close()
print('[tcpServer said]: %s' % recv) 
sock.close() 

1 个答案:

答案 0 :(得分:0)

服务器依赖于接收文件结束指示,但您永远不会发送一个。尝试在您的客户端中调用socket.shutdown()

...
wf.write('hello, tcpServer!') 
wf.close()
sock.shutdown(socket.SHUT_WR)
...