我正在尝试在python中实现一个简单的套接字连接。为了检查它,客户端发送一个'o'和'x。
序列我的服务器脚本如下:
import socket
import time
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Create a socket
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
s.bind(('', port)) # Bind to the port
s.listen(5)
c, addr = s.accept() # Establish connection with client.
print 'Got connection from', addr
i=0
while True:
str=c.recv(1)
print str[0]
print 'Got ',i
time.sleep(0.1)
i+=1
i 只是服务器收到的字符数的计数器。
我的客户端脚本:
import socket
import time
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "192.168.10.2" # Get local machine name
port = 12345
s.connect((host, port))
switch=0
while True:
if switch:
s.send('o')
switch=0
else:
s.send('x')
switch=1
time.sleep(0.1)
我的问题是,虽然开始时连接绝对正常(服务器按预期接收并打印字符),但一段时间后服务器停止从客户端接收数据,我无法弄清楚原因。在服务器的while循环的大约650-750次迭代之后连接失败。
非常感谢任何帮助......
谢谢!
答案 0 :(得分:-1)
问题出现是因为i
的值变为无穷大。您可以通过在while循环中添加几行来避免这种情况:
if i==100:
i = 0