c - shell 和文件代码中的 python 套接字差异

标签 c sockets python-2.7 networking

我正在尝试构建一个 python 客户端来与我的 C 服务器交互。这是客户端的代码:

import socket
s = socket.socket()
s.connect(("127.0.0.1", 12209))
print "preparing to send"
s.send("2")
s.send("mmm2.com")
s.send("mypwd")
s.send("5120")
print "Sent data"
root = s.recv(256)
print root

当然,当我在交互式 shell(GUI IDLE)上逐行运行这段代码时,一切都运行得很好。但是,当我将这段代码保存在一个文件中并尝试运行它时,它挂起并停止根据 Windows 响应,我只是没有做什么?

最佳答案

如果您逐行输入,发送的字符串可能会在单独的 recv() 调用中一个接一个地被服务器接收。

当您在脚本中执行它时,所有的 send() 调用都会立即在彼此之后运行而不会延迟,并且服务器可能会在单个 recv 中批量接收所有数据() 调用。所以服务器会看到“2mmm2.commypwd5120”,并且可能无法正确处理。它可能会等待来自客户端的更多输入。

您需要在值之间进行一些明确的分隔,例如换行符,以便服务器可以正确解析接收到的数据。

关于c - shell 和文件代码中的 python 套接字差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30508019/

相关文章:

ios - 使用 io.sockets.emit 进行套接字 io

python - Tkinter 按钮距窗口边缘的距离

c - 如何在c中对不同的int值调用不同的函数

c++ - 在windows下用c++列出目录

java - Java 套接字数组

Python解析嵌套

python - 在Python中导入nltk包时出现问题

c - 从世界位置获取屏幕位置

java - JFMI,标量变量的数量,传递字符串

c++ - 处理数据包的设计模式