【问题标题】:TCP Python Socket Server ResponseTCP Python 套接字服务器响应
【发布时间】:2016-05-25 05:19:19
【问题描述】:

我正在编写一个 TCP python 脚本,它将充当服务器并从机器(客户端)检索温度读数。我需要从服务器向客户端传递一个命令并监听响应的输出。我成功到达了 cmd 定义行,但是当调用 s.accept() 时,我被挂起,客户端没有响应。

服务器.py

import socket
port = 7777
ip = raw_input('192.168.62.233')

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((ip, port))
s.listen(1)
print "waiting on port: ", port

while True:
    cmd = raw_input('KRDG? A[term]')#command send to client

    conn, addr = s.accept()

    s.send(cmd)

    print "It sent"

    data = conn.recv(4096)

    print "Received:", data, " from address ", addr

编辑:

我相信你是对的,我应该将我的代码视为客户端和服务器上的温度读数。当我转到 s.recv() 时,我现在确实在“here 2”之后挂了。

客户端.py

import socket

ip = '192.168.62.233'
port = 7777              # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))

print 'here'
s.send('KRDG? A[term]')

print 'here 2'
data = s.recv(4096)
print 'here 3'
s.close()
print 'Received', repr(data)

【问题讨论】:

  • 通常情况正好相反:客户端通过命令询问服务器。客户端代码在哪里?
  • 我相信你是对的,我应该将我的代码视为客户端和服务器上的温度读数。当我在编辑中看到 s.recv() 时,我现在确实在“here 2”之后挂了
  • @ScottMacdonald 因此,您可以在 ip:port 成功连接到您的服务器,并向其发送数据,但您没有收到任何回复。有服务器代码吗?能否在服务端检查是否收到了客户端数据,以及服务端如何处理这些数据?

标签: python sockets tcp server


【解决方案1】:

通常,TCP 服务器接受会在等待客户端连接时阻塞。您是否检查过以确保您的客户可以并且正在连接?您可以使用 tcpdump 或类似工具来观察网络活动并确保客户端正在连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 2012-09-14
    相关资源
    最近更新 更多