- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 python 套接字编程的新手。我正在尝试创建一个简单的聊天应用程序我正在尝试将数据从客户端程序发送到服务器但是在服务器程序中接收数据时我遇到了“超时”
我的客户端程序-
import socket
PORT = 3017
def handler(req):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect(("localhost", PORT))
except socket.error, msg:
print("error connecting socket")
s = None
finally:
f.close()
s.settimeout(10.0)
s.send(req)
line = s.recv(1024)
s.close()
return line
if __name__ == '__main__':
while(1):
input = raw_input(">")
resp = handler(input)
print resp
我的服务器程序-
import socket
import SocketServer
class echo_server(SocketServer.StreamRequestHandler):
def handle(self):
timeout_telnet = float(2.0)
self.connection.settimeout(timeout_telnet)
data = []
# Read in all the lines.
while 1:
try:
line = self.rfile.readline()
except BaseException, e:
# Timeout.
print("error", e)
break
data.append(line)
print("data in handle method-\n", data)
self.wfile.write(("echo data- ".join(data)))
break
# Goodbye
def main():
s = SocketServer.ThreadingTCPServer(("", 3017), echo_server)
try:
s.serve_forever()
except KeyboardInterrupt:
print("Shutting down.")
s.socket.close()
if __name__ == "__main__":
main()
最佳答案
您的问题是因为您在使用流套接字时需要控制消息长度。
那里发生了什么:
您的客户端发送了一些数据(N 字节)。您的服务器从套接字读取数据,但它不知道您的“消息”是否完整或将发送一些额外的数据。
你能做什么?如果你要更换
self.rfile.readline()
使用 self.request.recv(10) - 您的服务器将读取 10 个字节并将它们发回。因此,您可以为服务器和客户端将要相互发送的消息设置一些消息大小。
这里还有一些有用的信息: https://docs.python.org/2/howto/sockets.html#using-a-socket
这是最简单的聊天示例:
客户
def handler(req):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", PORT))
message = req
s.send(req)
print s.recv(1024)
s.close()
服务器
def handle(self):
while True:
line = self.request.recv(1024)
if line:
print("data in handle method-\n", line.strip())
self.wfile.write(line)
但您以后可能会遇到一些问题,python 文档可以帮助您理解它是如何工作的。
关于python socketserver连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30226074/
我正在尝试学习 Java 网络编程,但遇到了一些障碍。我已经编写了服务器和客户端,但每次尝试连接它们时,我都会立即收到连接关闭错误。然后,我尝试编辑它,但现在出现连接拒绝错误。放弃了这一点,我决定在一
scala.tools.util.SocketServer 的用途是什么? 最佳答案 它是编译器的一部分,而不是标准 scala 库的一部分。其目的是实现fsc 的服务器通信。 (快速 Scala 编
我正在使用 SocketServer 启动一个简单的 TCP 服务器: class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServe
因此,我找到了以下示例代码,该示例代码允许在给定的URL和端口处建立基本的python HTTP服务器。我对Web服务器缺乏经验,并且正在尝试为此服务器的某些GET请求创建处理程序。但是,当远程访问此
我正在尝试制作Java套接字服务器,它有框架,可以在其中显示消息。 但是当我从框架构造函数运行服务器时,框架不可见。 我的代码的一部分: 调用框架: public static void ma
我在Python中使用TCP服务器,它实现了这个类: class ThreadedTCPServer(SocketServer.ThreadingTCPServer): pass 它的正常使用
抱歉,如果这个问题太基础了 - 这是我第一次尝试在 Python 中使用多线程套接字。 基本上,我正在尝试编写代码来获取 UDPServer 套接字接收的数据;套接字本身在线程内运行。 为了使主线程可
我在应用程序中使用客户端-服务器机制来传输内部数据。服务器部件之一应设计为一次服务一个请求,没有线程,没有积压。我发现奇怪的功能然后使用: serverport = new ServerSocket(
我想在我的 mac 上创建一个 SocketServer。 然而,这似乎是软件包的一些问题。当我尝试这个采样代码时发现 here它引发了属性错误。 import SocketServer class
我一直在四处寻找一种方法来让 SocketServer python 模块在没有成功的情况下监听多播。 有人成功做到了吗? 任何见解将不胜感激! 谢谢 最佳答案 文档 (http://docs.pyt
我正在使用 Python3 的 socketserver 模块创建一个简单的 TCP 服务器。我想获取服务器所服务的服务器的 IP。 我注意到 socketserver(而不是 BaseServer)
我正在尝试实现 SocketServer 以从移动应用程序接收文件: 移动应用程序发送文件大小。 移动应用程序发送文件。 正确接收文件大小。在应用程序中发送所有数据。但是,SocketServer无法
我需要用socketserver搭建一个tcp server。根据他们的文档,我需要继承类 TCPServer,并将它传递给类 BaseRequestHandler 的子类,我重写了方法 handle
下面是我目前使用的代码: #! /usr/bin/python print 'Content-type: application' print '\n\n' import SocketServer i
我是java新手,我无法理解void go()方法的while循环部分。accept()方法等待客户端请求连接到服务器,那么为什么像Print writer等其他语句,没有被执行? 其他语句是否在 w
我只是用 Sockets 和 ServerSockets 进行了一些测试。所以我做了一个小测试程序,但它不起作用。看起来它停在“.accept()”方法的某个地方,但我不知道为什么。有人可以帮忙吗?
我有一个 Android 服务在后台运行,它将使用以下代码: while(true) { ServerSocket server = new ServerSocket(1234); Socke
这是我玩过的代码,但每次我犯错我都无法重新启动它。它对我说端口/套接字已被使用这是第一个问题第二个在我的 MyTCPHandler 中,我怎么知道使用的端口?这是我的代码: # MetaProject
我正在创建一个 UDP SocketServer,如果我收到来自客户端的关闭消息,我想关闭而不是关闭 UDP 连接。 当我收到消息时,将显示 Begin,但不会显示 Finished。我怎样才能退出这
我正在使用 Python 3.1 中的 socketserver 模块运行 Python 服务器。每次我从客户端(客户端成功)获得连接时,我的服务器都会收到一个错误。这是我的代码: import so
我是一名优秀的程序员,十分优秀!