相关疑难解决方法(0)

Python SocketServer:发送到多个客户端?

好吧,我正在尝试用一个SocketServer构建一个小的python prgram,它应该将它收到的消息发送给所有连接的客户端.我卡住了,我不知道如何在服务器端存储客户端,我不知道如何发送给多个客户端.哦,我的程序每次超过1个客户端连接失败,每次客户端发送多个消息...

这是我的代码,直到现在:

        print str(self.client_address[0])+' connected.'
    def handle(self):
        new=1
        for client in clients:
            if client==self.request:
                new=0
        if new==1:
            clients.append(self.request)
        for client in clients:
            data=self.request.recv(1024)
            client.send(data)

class Host:
    def __init__(self):
        self.address = ('localhost', 0)
        self.server = SocketServer.TCPServer(self.address, EchoRequestHandler)
        ip, port = self.server.server_address
        self.t = threading.Thread(target=self.server.serve_forever)
        self.t.setDaemon(True)
        self.t.start()
        print ''
        print 'Hosted with IP: '+ip+' and port: '+str(port)+'. Clients can now connect.'
        print ''
    def close(self):
        self.server.socket.close()

class Client:
    name=''
    ip=''
    port=0
    def __init__(self,ip,port,name):
        self.name=name
        self.hostIp=ip
        self.hostPort=port
        self.s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.s.connect((self.hostIp, self.hostPort))
    def …
Run Code Online (Sandbox Code Playgroud)

python sockets networking socketserver python-2.7

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

python socket.error:[Errno 9]错误的文件描述符

我想用Python制作服务器和客户端.它应该建立多个连接,一个是服务器向客户端发送内容,另一个是客户端向服务器发送内容的连接.

第一个连接工作正常,但第二个连接崩溃了消息:

socket.error: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

这是服务器:

import socket
import errno
import pickle

def Main():
    host = '188.174.233.99'
    port = 66666

    all_text = ['text1', 'text2', 'text3']

    all_description = ['Test \n Description1\n', 'Test \n Description1\n', 'Test \n Description1\n']

    all_images = ['unlock.png', 'unlock.png', 'unlock.png']
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
    s.bind((host, port))
    s.listen(1)


    while True:

        c, addr = s.accept()
        c.setblocking(0)

        print "Connection from: " + str(addr)


        command = c.recv(1024)

        if command == 'GIVEALL':
            textstring = pickle.dumps([all_text, all_images, all_description])#verwandelt Liste in String …
Run Code Online (Sandbox Code Playgroud)

python sockets

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

Python TCP可以同时监听多个端口

我正在构建一个基本上有一堆端口监听连接的python服务器.进行连接时,端口会发出消息,关闭连接并重置(即等待下一次连接).

期望的功能:

为portlist中的每个端口创建TCP套接字(这是通过参数动态填充的)

听取连接

建立连接时,发送消息并断开连接

继续听

我有一种感觉,我的答案可能在多线程中,但我不确定...到目前为止我的代码:

  for port in portlist:
    ds = ("0.0.0.0", port)

    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    server.bind(ds)
    server.listen(1)
    while 1:
            connection, address = server.accept()
            message="message\n"
            connection.send(message)
            connection.close()
Run Code Online (Sandbox Code Playgroud)

python sockets multithreading tcp

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

如何在 Linux 中检查与套接字服务器的现有连接?

我有一个项目,我需要通过套接字发送文件进行简单的聊天。我想知道 C 套接字编程中是否有任何函数可以让我检查现有连接(我需要向每个连接的客户端发送消息)。我尝试通过创建一个数组并将套接字保存到其中来实现此目的,但由于fork()它不起作用,每个客户端都有自己的数组并且它们不匹配。我的服务器是用 C 编写的,我的客户端是用 Python 编写的。下面是我的代码:

服务器:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define PORT 9992

int main(){
    char separator[4];
    int iterator = 0;
    int clients[32];
    separator[0] = '|';
    int sockfd, ret;
    char name[32];
     struct sockaddr_in serverAddr;

    int newSocket;
    struct sockaddr_in newAddr;

    socklen_t addr_size;

    char buffer[1024];
    pid_t childpid;

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if(sockfd < 0){
        printf("[-]Error in connection.\n");
        exit(1);
    }
    printf("[+]Server Socket is created.\n");

    memset(&serverAddr, '\0', …
Run Code Online (Sandbox Code Playgroud)

c c++ sockets linux

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

标签 统计

sockets ×4

python ×3

c ×1

c++ ×1

linux ×1

multithreading ×1

networking ×1

python-2.7 ×1

socketserver ×1

tcp ×1