import socket
quest=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
quest.bind(('127.0.0.1',66))
quest.listen(2)
tao,en=quest.accept();
while True:
tao.send('hellow 成功'.encode())
a=tao.recv(100)
print(a.decode())
tao.close()
quest.close()
import socket
quest=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
quest.connect(('127.0.0.1',66))
while True:
quest.send(input().encode())
a=quest.recv(1000)
print(a.decode())
quest.close()
这是我写的程序。两个进程通过socket进行通信。我在客户端连续输入两个回车,控制台就不回消息了。好奇怪,我设置的循环都是死循环啊,怎么能不回消息呢
input
函数的问题吧, input函数需要输入正确的格式, 比如字符串需要连双引号一起输入"", 数字就只输入数字. 回车就是无输入, 也就是没发送数据,
自然服务端没有接收到数据,也不会返回. 用raw_input
代替, 全部当做字符串.
以下的测试过.
server.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import socket
quest=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
quest.bind(('127.0.0.1',66))
quest.listen(2)
tao,en=quest.accept();
while True:
tao.send('hello world'.encode('utf-8'))
a=tao.recv(100)
print(a.decode('utf-8'))
tao.close()
quest.close()
client.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import socket
quest=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
quest.connect(('127.0.0.1',66))
while True:
try:
s1 = raw_input('-->')
if(len(s1) == 0):
continue
quest.send(s1.encode('utf-8'))
except Exception as e:
continue
a=quest.recv(1000)
print(a.decode('utf-8'))
quest.close()