这是一个关于python的socket问题 5C
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进行通信。我在客户端连续输入两个回车,控制台就不回消息了。好奇怪,我设置的循环都是死循环啊,怎么能不回消息呢

1个回答

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()
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问