【发布时间】:2015-03-30 08:34:08
【问题描述】:
我正在使用 TCP 套接字在我的服务器和客户端之间进行通信。服务端代码和socket代码如下:
服务器:
from socket import *
HOST = 'xx.xx.xx.xx'
PORT = 1999
serversocket = socket(AF_INET,SOCK_STREAM)
serversocket.bind((HOST,PORT))
print 'bind success'
serversocket.listen(5)
print 'listening'
while True:
(clientsocket, address) = serversocket.accept()
print ("Got client request from",address)
#clientsocket.send('True')
data = clientsocket.recv(1024)
print data
clientsocket.send('True')
clientsocket.close()
客户:
import socket
import sys
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Connect the socket to the port on the server given by the caller
server_address = ('xx.xx.xx.xx', 1999)
print >>sys.stderr, 'connecting to %s port %s' % server_address
sock.connect(server_address)
try:
message = 'This is the message. It will be repeated.'
print >>sys.stderr, 'sending'
for x in range (0,1):
name=raw_input ('what is ur name')
print type(name)
sock.send(name)
print sock.recv(1024)
finally:
sock.close()
我能够从客户端与服务器通信,并且能够发送和接收数据。但我面临的问题是我无法从服务器连续发送和接收数据。我必须在笔记本电脑上重新启动客户端代码才能再次从服务器发送和接收数据。上述客户端代码的工作方式是,当我给键盘输入时,套接字将数据发送到服务器,服务器响应。但是在客户端代码中,如果我进行两次迭代,则在 for 循环中,对于第二次迭代,我从键盘输入的数据没有到达服务器。我需要重新启动客户端代码才能再次发送数据。我该如何解决这个问题?
另外,当客户端连接到服务器时,另一个无法连接到服务器。关于如何做到这一点的任何想法?
【问题讨论】:
-
不要关闭套接字?重新连接socket?
-
是否存在重新连接套接字的命令?
-
你试过
sock.connect(server_address)吗?