这是我玩的代码,但每次我犯了一个错误,我都无法重新启动它.它告诉我端口/套接字已经被使用了这是第一个问题第二个问题在我的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) 我在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) 我设置了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) 我想在我的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) 我正在构建一个多人游戏,所以一旦服务器启动我想连续广播服务器名称,以便客户端可以知道有一些服务器正在运行.我不想给IP地址和端口号连接到服务器.有人可以帮我广播服务器名称.
现在我正在开发套接字服务器,并为套接字的多个客户端创建了多线程。并且还将连接的每个线程放入一个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)

我正在尝试快速编写一个简单的回显服务器。我发现的示例不是功能性的低级示例,还是用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'
我什至无法做到这一点。
我的代码:
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) 我一直在尝试制作一个多客户端服务器,并且最终可以正常运行,但是我现在要做的是代替获取客户端地址,让客户端输入名称,然后程序会说“鲍勃:嗨,大家好”,而不是“ 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) 我打算创建可以接收大量连接的Web服务器.这10000个连接用户将发送到服务器号码,服务器将这些平方号码返回给用户.10000个连接太多,异步方法在这里是合适的.我发现Python 3.4的两个库可以帮助:
socketserver和asyncio
使用socketserver库,我们可以使用ThreadingMixIn和ForkingMixIn类作为异步处理程序.但这受到核心数量的限制.另一方面,我们有asyncio库.我不明白它究竟是如何运作的.我应该使用哪一个?这两个图书馆可以一起工作吗?
我的套接字服务器程序如下所述.它适用于单个客户端,但当我尝试同时将其与另一个客户端连接时,我无法连接.但是我已经在我的程序中将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)