小编Mic*_*ith的帖子

Python套接字Errno 107:传输端点未连接

编辑:存在一个非常混乱的理由,即术语RTFM存在.阅读...手册有效.如果我实际上已经阅读过本手册,我就会知道socket.accept()会生成一个客户端套接字,用于与客户端进行通信.显然你应该使用它!

我正在使用套接字在Python中编写一个简单的聊天程序.到目前为止,我的代码如下(我是编码,真实的东西太长了).

服务器类和导入:

import socket
import os
import socket
from subprocess import Popen, PIPE
import threading

class Server:
    def __init__(self,name,port=5001):
        self.name = name
        self.port = port
        self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.server_socket.bind(('',self.port))
        self.server_listen()

    def server_listen(self):
        self.server_socket.listen(5)
        while 1:
            self.client, self.address = self.server_socket.accept()
            self.discourse()

    def discourse(self):
        DisplayMessages(self.server_socket).start() #This is defined below
        while 1:
            #This sends messages to the client, also listening with DisplayMessages
            user_input = str(input(self.name + ' > '))
            send_bufr = '!dmsg :' + self.name + ' ' + user_input …
Run Code Online (Sandbox Code Playgroud)

python sockets tcp

8
推荐指数
0
解决办法
2万
查看次数

用Python实现插件系统

我正在编写一个应用程序(Minecraft的服务器包装器),我希望通过插件进行扩展.我有一个适用的系统,但我认为从长远来看它可以使用改进.

我现在的方式是,应用程序在服务器类中调用一个"get_plugins"方法,首先导入一个名为pluginutils.py的文件(pluginutils.py定义一个BasePlugin类,所有插件都是子类),然后循环遍历每个.cmds目录中的py文件,导入它并检查它是否是BasePlugin的子类.如果是,则将其实例存储在字典中,其中键是插件中定义的cmd类变量.每当应用程序从服务器接收命令时,它都会检查它是否是字典中的键,如果是,则运行存储在字典中的实例的start方法,它将从命令中获取必要的参数.

虽然这有效,但我觉得这是一种草率的方式.有没有更好的技术来实现类似的系统?我想自己写这个(我不想使用像zope.interface这样的东西)因为这是一次学习经历.谢谢.

python plugins

8
推荐指数
1
解决办法
1349
查看次数

无法在所有计算机上访问JAR中的资源

我正在编写一个应用程序(特别是Bukkit Minecraft服务器的插件).这样做需要我从应用程序的JAR访问.properties文件.这是我遇到一个奇怪问题的地方.当我在我的开发PC上测试程序时,它运行得很好..properties文件被加载,一切都很好.但是,在我测试它的另一台计算机上,我尝试启动应用程序,它无法加载属性,而且InputStreamnull.这是我加载文件的方法:

public class Points {
    private HashMap<String, MessageFormat> messages;

    public Points() {
         buildMessages();
    }

public static void buildMessages() {
        Properties messageProps = new Properties();
        InputStream in = Points.class.getResourceAsStream("resources/messages.properties");
        messages = new HashMap<String, MessageFormat>();
        Enumeration en;
        try {
            messageProps.load(in);
        } catch(IOException ex) {
            System.err.println("Couldn't read message properties file!");
            return;
        } catch(NullPointerException ex) {
            System.err.println("Couldn't read message properties file!");
            if(in == null)
                System.out.println("IOStream null");
            return;
        }
        en = messageProps.propertyNames();
        while(en.hasMoreElements()) {
            String key = (String)en.nextElement();
            String prop …
Run Code Online (Sandbox Code Playgroud)

java file-io resources jar

6
推荐指数
1
解决办法
2113
查看次数

Python:有没有一种好方法可以检查文本是否加密?

我一直在玩cryptocat,这是一个有趣的在线聊天服务,允许你用密钥加密你的消息,这样只有拥有相同密钥的人才能阅读你的消息.该服务的一个有趣方面(在我看来)是这样一个事实,即使用您正在使用的密钥以外的密钥加密的文本仅显示为"[encrypted]",而不是一堆垃圾密文.我的问题是,在Python中,是否有一种很好的方法来确定给定的文本是否是密文?我在这个例子中使用RC4,因为它是我能实现的最快的东西(基于维基百科上的伪代码.谢谢.

python encryption chat stream-cipher

5
推荐指数
2
解决办法
3005
查看次数

按索引对列表中的列表元素进行分组

我试图获取列表列表,并返回列表列表,其中包含原始列表列表索引中的每个元素.我知道那个措辞严厉.这是一个例子.

说我有以下列表列表:

[[1,2,3], [4,5,6], [7,8,9]]
Run Code Online (Sandbox Code Playgroud)

我想得到另一个列表列表,其中每个列表是特定索引处每个元素的列表.例如:

[[1,2,3], [4,5,6], [7,8,9]] becomes [[1,4,7], [2,5,8], [3,6,9]]
Run Code Online (Sandbox Code Playgroud)

因此,返回列表中的第一个列表包含每个原始列表的第一个索引处的所有元素,依此类推.我被卡住了,不知道如何做到这一点.任何帮助,将不胜感激.谢谢.

python list

3
推荐指数
1
解决办法
139
查看次数

为什么不同的浏览器需要自己的边框半径样式?

我有点想知道这一点.为什么不同的浏览器只支持CSS border-radius属性(如果它带有自己的特殊前缀).我不明白为什么我要写这个:

/* For Firefox and other Gecko browsers */
-moz-border-radius: 5px;
/* For Chrome/Safari and other Webkit browsers */
-webkit-border-radius: 5px;
/* For others */
border-radius: 5px;
Run Code Online (Sandbox Code Playgroud)

我什么时候写这个:

border-radius: 5px;
Run Code Online (Sandbox Code Playgroud)

有没有理由我需要写前缀?为什么浏览器都不支持该border-radius属性?这对我来说没有意义,为什么浏览器开发人员决定让所有人都有不同的属性让我的生活更加艰难.它背后有技术或法律原因吗?

css browser gecko webkit cross-browser

1
推荐指数
1
解决办法
757
查看次数