标签: socketserver

python SocketServer.BaseRequestHandler知道端口并使用已经打开的端口

这是我玩的代码,但每次我犯了一个错误,我都无法重新启动它.它告诉我端口/套接字已经被使用了这是第一个问题第二个问题在我的MyTCPHandler中如何知道所使用的端口?这是我的代码:

# MetaProject v 0.2
# -*- coding: utf-8 -*-
"""
Thanks to :
People from irc :
Flox,Luyt
People from stack Overflow :
Philippe Leybaert,Platinum Azure,methodin,Suresh Kumar,S.Lott,MatTheCat,
kevpie,Ignacio Vazquez-Abrams,adamk,Frédéric Hamidi,THC4k,THC4k,Blam
"""
import SocketServer
import threading

class MyTCPHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        self.data = self.request.recv(1024)
        socket = self.request
        print "%s wrote:" % self.client_address[0]
        print self.data
        print self.__dict__
        socket.sendto(self.data.upper(), self.client_address)


def serve_thread(host, port):
    server = SocketServer.TCPServer((host, port), MyTCPHandler)
    server.serve_forever()





if __name__ == "__main__":
    threading.Thread(target=serve_thread,args=('localhost', 1238)).start()
    threading.Thread(target=serve_thread,args=('localhost', 1237)).start()
    print "toto"
Run Code Online (Sandbox Code Playgroud)

我做了 :

def serve_thread(host, …
Run Code Online (Sandbox Code Playgroud)

python sockets port socketserver

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

如何在java中的Web服务器上编写

我在java中遇到与从客户端写入Web服务器相关的问题.我使用以下代码请帮助我,我错了

对于Server类

import java.net.ServerSocket;
import java.net.Socket;
import java.io.InputStream;
import java.util.Scanner;
import java.io.InputStreamReader;
import java.io.BufferedReader;

public class Server
{
    public static void main(String args[]){
        try{
            ServerSocket s = new ServerSocket(8080);
            System.out.println("ashish");

            Socket incoming = s.accept();
            System.out.println("the status of the socket="+incoming.isConnected());
            InputStream inStream = incoming.getInputStream();

            InputStreamReader isr=new InputStreamReader(inStream);
            BufferedReader br=new BufferedReader(isr);
            String str=null;
            while((str=br.readLine()).equals("exit")==false){
                System.out.println(str);
            }

            System.out.println("System exit");
        }catch(Exception e){
            e.printStackTrace();
        }    
    }
}
Run Code Online (Sandbox Code Playgroud)

对于实际上是applet的客户端类具有以下代码

import java.applet.Applet;
import java.net.URL;
import java.net.HttpURLConnection;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

public class testApplet extends Applet
{

    public …
Run Code Online (Sandbox Code Playgroud)

java sockets webserver socketserver

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

如何在Python中禁用socketserver的输出?

我设置了socketserver来运行一些单元测试,并将其日志输出到控制台.

有没有办法禁用它?

这是我正在运行的代码:

class TestServer(SocketServer.TCPServer):
    allow_reuse_address = True


class ScraperExampleTest(unittest.TestCase):
    def setUp(self):
        # Due to requests not supporting the 'file' scheme, we are forced to run
        # our own server. See: https://github.com/kennethreitz/requests/issues/847
        Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
        httpd = TestServer(('', PORT), Handler)
        httpd_thread = threading.Thread(target=httpd.serve_forever)
        httpd_thread.setDaemon(True)
        httpd_thread.start()
Run Code Online (Sandbox Code Playgroud)

python unit-testing stdout socketserver

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

SocketServer没有模块正在导入

我想在我的mac上创建一个SocketServer.

然而,这似乎是包的一些问题.当我尝试这里找到的这个采样代码时,会引发属性错误.

import SocketServer

class MyTCPHandler(SocketServer.BaseRequestHandler):
    """
    The RequestHandler class for our server.

    It is instantiated once per connection to the server, and must
    override the handle() method to implement communication to the
    client.
    """

    def handle(self):
        # self.request is the TCP socket connected to the client
        self.data = self.request.recv(1024).strip()
        print "{} wrote:".format(self.client_address[0])
        print self.data
        # just send back the same data, but upper-cased
        self.request.sendall(self.data.upper())

if __name__ == "__main__":
    HOST, PORT = "localhost", 9999

    # Create the server, …
Run Code Online (Sandbox Code Playgroud)

python socketserver python-2.7

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

在python中广播套接字服务器

我正在构建一个多人游戏,所以一旦服务器启动我想连续广播服务器名称,以便客户端可以知道有一些服务器正在运行.我不想给IP地址和端口号连接到服务器.有人可以帮我广播服务器名称.

  • 它的应用程序不是Web应用程序.

python sockets socketserver python-2.7 python-sockets

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

Iterator<Long> :HTMLDocument.Iterator 类型不是通用的;它不能用参数 <Long> 参数化

现在我正在开发套接字服务器,并为套接字的多个客户端创建了多线程。并且还将连接的每个线程放入一个HashMap中来存储线程的Object。

问题是:我无法将 HashMap 返回的键集放入 Iterator 中。我将键值初始化为 。有什么问题?我不知道。

HashMap<Long, ClientThread> m_clients;

long m_currentKey;

m_clients.put((Long)m_currentKey, clientThread);

Iterator<Long> itr = m_clients.keySet().iterator(); //error:: Why?
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

java iterator hashmap socketserver

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

在Swift中创建一个套接字

我正在尝试快速编写一个简单的回显服务器。我发现的示例不是功能性的低级示例,还是用Objective-c编写的

我在很多事情上都失败了,我将从头开始。我无法使用更高级别的功能创建一个简单的套接字CFSocketCreate。我最终得到的是:

class EchoServer : NSObject, NSStreamDelegate
{
    private var serverSocket: CFSocketRef?

    func start()
    {
        self.serverSocket = CFSocketCreate(kCFAllocatorDefault, AF_INET, SOCK_STREAM, 0, 2, &self.acceptConnection, NSNull())
    }

    func acceptConnection(socket: CFSocketRef, type: CFSocketCallBackType, address: CFDataRef, data: UnsafePointer<Void>, info: UnsafeMutablePointer<Void>)
    {
        // Accept connection and stuff later
    }
}
Run Code Online (Sandbox Code Playgroud)

我是xcode / objectivec / swift的新手,甚至在理解错误消息时也遇到了困难。上面的代码让我简单地

EchoServer.swift:31:93:'(CFSocketRef,类型:CFSocketCallBackType,地址:CFDataRef,数据:UnsafePointer,信息:UnsafeMutablePointer)->()'不能转换为'@lvalue inout $ T10'

我什至无法做到这一点。

sockets xcode socketserver swift

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

指定为非 null 的参数为 null.SocketService

我的代码:

override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int
    {
        if (!this.isRunning)
        {
            this.isRunning = true
            this.backgroundThread?.start()
        }

        return START_NOT_STICKY
    }
Run Code Online (Sandbox Code Playgroud)

错误:

指定为非空的参数为空:方法co.okex.app.global.services.backgroundservices.SocketService.onStartCommand,参数intent

android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3943)
android.app.ActivityThread.access$2300 (ActivityThread.java:218)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1832)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:145)
android.app.ActivityThread.main (ActivityThread.java:6934)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1404)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1199)
Run Code Online (Sandbox Code Playgroud)

java android socketserver kotlin

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

python套接字和socketserver

我一直在尝试制作一个多客户端服务器,并且最终可以正常运行,但是我现在要做的是代替获取客户端地址,让客户端输入名称,然后程序会说“鲍勃:嗨,大家好”,而不是“ 127.0.0.1:嗨,大家好”。

我使用了python文档中的预制服务器和客户端。这是服务器:

import socketserver

class MyUDPHandler(socketserver.BaseRequestHandler):


    def handle(self):
        data = self.request[0].strip()
        name = self.request[0].strip()
        socket = self.request[1]
        print(name,"wrote:".format(self.client_address[0]))
        print(data)
        socket.sendto(data.upper(), self.client_address)

if __name__ == "__main__":
    HOST, PORT = "localhost", 9999
    server = socketserver.UDPServer((HOST, PORT), MyUDPHandler)
    server.serve_forever()
Run Code Online (Sandbox Code Playgroud)

这是客户:

import socket
import sys

HOST, PORT = "localhost", 9999
data = "".join(sys.argv[1:])
name = "".join(sys.argv[1:])


sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

sock.sendto(bytes(name + "Bob", 'utf-8'), (HOST, PORT))
sock.sendto(bytes(data + "hello my name is Bob", "utf-8"), (HOST, PORT))
received = str(sock.recv(1024), "utf-8")

print("Sent:     {}".format(data))
print("Received: …
Run Code Online (Sandbox Code Playgroud)

python sockets client socketserver

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

我应该使用哪个Python库?SocketServer或Asyncio?

我打算创建可以接收大量连接的Web服务器.这10000个连接用户将发送到服务器号码,服务器将这些平方号码返回给用户.10000个连接太多,异步方法在这里是合适的.我发现Python 3.4的两个库可以帮助:

socketserver和asyncio

使用socketserver库,我们可以使用ThreadingMixIn和ForkingMixIn类作为异步处理程序.但这受到核心数量的限制.另一方面,我们有asyncio库.我不明白它究竟是如何运作的.我应该使用哪一个?这两个图书馆可以一起工作吗?

socketserver python-asyncio

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

无法使用我的套接字服务器程序与多个客户端连接

我的套接字服务器程序如下所述.它适用于单个客户端,但当我尝试同时将其与另一个客户端连接时,我无法连接.但是我已经在我的程序中将MAX_CLIENTS定义为2,但仍然是为什么我无法连接多个客户端?连接多个客户端的正确流程是什么?我可以通过修改此代码来连接多个客户端吗?任何可能的修复?

套接字服务器代码:

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

#define ERROR -1
#define MAX_CLIENTS 2
#define MAX_DATA 1024




main (int argc, char **argv){


    struct sockaddr_in server;
    struct sockaddr_in client;
    int sock;
    int new;
    int sockaddr_len = sizeof (struct sockaddr_in);
    int data_len;
    char data [MAX_DATA];


    if ((sock = socket (AF_INET, SOCK_STREAM, 0)) == -1)
    {

        perror ("socket: ");
        exit (-1);

    }   
    printf("after socket");
    server.sin_family = AF_INET;
    server.sin_port = htons(atoi(argv[2]));
    server.sin_addr.s_addr …
Run Code Online (Sandbox Code Playgroud)

c sockets socketserver

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