我想在php中为多个客户端创建服务器的http套接字连接.我怎样才能做到这一点 ?我需要一些资源.
首先,我试图在java中创建服务器.我在java中创建一个服务器.并试图从Android应用程序到达.但是服务器找不到任何客户端.但是当我在java中创建客户端时,它正在工作.我该如何解决这个问题?
我有以下代码作为我的python服务器:
#!/usr/bin/python3
from http.server import HTTPServer, CGIHTTPRequestHandler
port = 8080
host_name = "localhost"
httpd = HTTPServer((host_name, port), CGIHTTPRequestHandler)
print("server started, to quit press <ctrl-c>")
httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)
如何设置服务器为其提供服务的DocumentRoot.
如果我将Prolog HTTP服务器绑定到localhost端口9000,我怎样才能让Prolog为我的图像生成正确的路径?例如,如果我的.pl文件和/ .jpg或.png文件位于桌面上,如何让服务器生成如下代码:
<img src="C:\Users\Luka\\Desktop\ImageName.ext"/>,"ext"代表扩展名.我已经看了SWI-Prolog和本教程的文档,但我发现所有抽象路径都很混乱.我在Web服务器方面有很多经验,但是这有很多不同,我在理解它时遇到了很多问题.
这是我的尝试,由我在SWI-Prolog文档和上述教程中学到的(或者至少我认为的)组成:
:- use_module(library(http/thread_httpd)).
:- use_module(library(http/http_dispatch)).
:- use_module(library(http/http_parameters)).
:- use_module(library(http/html_write)).
file_search_path('*', 'C:\\Users\\Luka\\Desktop\\').
server(Port) :-
http_server(http_dispatch, [port(Port)]).
:- http_handler(root(.), render_base, []).
:- http_handler('/form', process_form, []).
process_form(Request) :-
http_parameters(Request,
[name(Name,[atom])]),
reply_html_page('Posted data: ',['',Name]).
render_base(_Request) :-
reply_html_page(
title('Naslov'),
img([src='/image.png', alt='Incident'])
).
Run Code Online (Sandbox Code Playgroud)
再次感谢您的巨大耐心.:-)
我在Golang中写了一个httpserver,但是我发现当来自Web浏览器的多个请求时,http.HandleFunc将被阻塞.如何让服务器同时处理多个请求?谢谢.
我的代码是:
func DoQuery(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
fmt.Printf("%d path %s\n", time.Now().Unix(), r.URL.Path)
time.Sleep(10 * time.Second)
fmt.Fprintf(w, "hello...")
//why this function block when multi request ?
}
func main() {
fmt.Printf("server start working...\n")
http.HandleFunc("/query", DoQuery)
s := &http.Server{
Addr: ":9090",
ReadTimeout: 30 * time.Second,
WriteTimeout: 30 * time.Second,
//MaxHeaderBytes: 1 << 20,
}
log.Fatal(s.ListenAndServe())
fmt.Printf("server stop...")
}
Run Code Online (Sandbox Code Playgroud)
我运行了你的代码,一切都按预期工作.我同时做了两个请求(卷曲localhost:9090 /查询),他们都在10秒后完成了.也许问题出在其他地方?这是我使用的命令:time curl -s localhost:9090/query | echo $(curl -s localhost:9090/query) - tjameson
thakns
真奇怪.当我从chrome请求相同的url时,同时发送两个请求不处理,但是使用cur test可以同时处理.但是当我发送两个请求使用不同的url时,它可以在同一时间处理.
[root @ localhost httpserver]#./ httppServer
服务器开始工作......
1374301593路径/查询?form …
我有一个asp.net Web API项目,在我的WebApiConfig文件中,我定义了以下路由:
config.Routes.MapHttpRoute(
name: "Web API Get",
routeTemplate: "api/{controller}",
defaults: new { action = "Get" },
constraints: new { httpMethod = new HttpMethodConstraint("GET") }
);
Run Code Online (Sandbox Code Playgroud)
出于集成测试的目的,我想向a发出请求以HttpSelfHostServer验证我们是否从api调用中收回了正确的数据.我正在做HttpRequestMessage如下:
var httpMethod = new HttpMethod("GET");
var request = new HttpRequestMessage(httpMethod, "http://localhost:XXXX/api/User/");
var results = _client.SendAsync(request).Result;
Run Code Online (Sandbox Code Playgroud)
我希望这会调用UserController上的Get方法,然后返回该方法中定义的结果.但是,我得到以下异常:
System.InvalidOperationException:路由模板'api/{controller}'的路由上的约束条目'httpMethod'必须具有字符串值或者是实现'IHttpRouteConstraint'的类型
http://localhost:XXXX/api/User/当我在浏览器中使用它时,同样的url()可以正常工作,所以我很确定问题必须与我HttpSelfHostServer通过发送请求的方式相同HttpClient.我尝试过使用HttpMethod.Get常量,但这也引发了同样的错误.
有谁知道如何解决这个问题?
c# asp.net httpserver asp.net-web-api asp.net-web-api-routing
我对网络编程的了解有限,因此,所有评论都非常受欢迎.基本上我的问题归结为以下问题:
Q1.是否存在分散的异步跨平台点对点通信?
让我解释一下自己.
如果我们在具有实际IP地址的计算机上运行两个http服务器,那么显然答案是肯定的,假设有人为交互编写协议.
更进一步,如果它们中的一个(或两者)在路由器后面,那么,通过端口转发,仍然可以建立通信.然而,这里的问题开始是因为如果有人想在后台运行这样的服务器,比如说在手机中,依赖这个服务器的应用程序真的可以在家里工作时(我们真的不能指望请求端口转发)到处都是).
但即便如此,
Q2.当有人不使用Wi-Fi时,移动电话是否从电信公司获得实际的IP地址?
最后,我能想到的两个(也许还有更多)相关问题是:
根据Skype的答案,它说:如果其中一个被叫方或两个都没有公共IP,那么它们会通过UDP或TCP将语音流量发送到另一个在线Skype节点. 因此,似乎Skype中没有直接通信,因为他们必须使用中间人进行这种情况.
关于Viber,我找不到这个特定问题的完整答案.人们通过Viber中央服务器互相交谈,还是建立直接连接?当然,如果他们确实建立了直接连接,那么我真的想知道他们如何管理这样的事情,因为手机可能有也可能没有物理地址.即使Viber没有运行而且我在路由器后面,Viber消息如何从我的朋友那里发送到我的手机?
我猜Viber的答案实际上是推送通知,但据我所知,推送通知的所有变体都依赖于开放连接,然后应用程序的服务器通过这样的连接将通知发送给客户端.所以,这种方法让我们觉得它是异步的,但实际上并非如此.我们在欺骗,因为与服务器之间存在持续开放的连接,此外,据我所知,应用程序服务器必须通过该服务器推送通知.示意图:
A>中央应用服务器>中央服务器w /打开连接到我的手机>我
所以,这似乎又是一种集中的方法.
老实说,我能想到的唯一方法是分散和异步(在移动电话上)是在每个平台/设备上运行http服务器,但这是以不使用Wi-Fi为代价而假设一家电信公司真的为每部手机分配一个物理IP地址(我不知道它是否属实,是吗?).
WASTE,暗网,F2F等怎么样?它们是否在某些相关方之间更直接的异步通信意义上提供了优势?是否存在使用此类通信方法的实际应用程序(也包括移动电话).
真的,这不是我想要解决的实际问题,但我想知道最先进的技术是什么,以便我可以弄清楚如何从那里开始.所以,所有评论都非常受欢迎.如果您有关于最新技术的参考资料我也想了解它们,但简短的描述也会很好.
我提前感谢你所有的时间和精力.
p2p asynchronous communication-protocol httpserver push-notification
我正在尝试用Java编写一个可以处理POST请求的简单HTTP服务器.当我的服务器成功收到GET时,它会在POST上崩溃.
这是服务器
public class RequestHandler {
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
server.createContext("/requests", new MyHandler());
server.setExecutor(null); // creates a default executor
server.start();
}
static class MyHandler implements HttpHandler {
public void handle(HttpExchange t) throws IOException {
String response = "hello world";
t.sendResponseHeaders(200, response.length());
System.out.println(response);
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我用来发送POST的Java代码
// HTTP POST request
private void sendPost() throws Exception {
String url = "http://localhost:8080/requests";
URL obj = new …Run Code Online (Sandbox Code Playgroud) 我正在构建一个带有角度(主要是ui-router)的前端Web应用程序,并通过节点http-server提供html文件来进行本地开发.我注意到当我进行更新时,http-server不提供我的静态html文件,这对我的本地开发很有挑战性.
我已经全局安装了http-server,npm install http-server -g并通过转到根项目文件夹并运行来启动它http-server.默认为localhost:8080-两种似乎有效的方法是在每次更新后或通过chrome隐身模式更改端口号.
有没有办法正常使用http-server而无需更改端口或使用隐身模式?
如果它是相关的,我正在使用MBP v.10.11.3
谢谢!
我已经在节点环境中创建了一个基本的AngularJS应用。我正在使用http-server模块将文件提供给浏览器。一切正常,除了index.html服务器启动时默认无法提供服务的事实。
我检查了npm注册表以获得http服务器模块的更多选项,还尝试在SO上寻找相关问题,但仍然无法获得我想要的东西。
是否可以指定服务器启动时要拾取的文件。
我的服务器基本上在localhost:8080我想要的时候开始localhost:8080/index.html
我的开始脚本是http-server -a localhost -p 8080 -c-1。如果我做这样的事http-server -a localhost -p 8080 -c-1 index.html,令我惊讶的是它打开了index.html文件,但是是在文件协议而不是在文件协议上提供的localhost。
我在这里做错了。
PS我参观了Angular JS种子,那里有官方的例子http-server -a localhost -p 8080 -c-1 ./app。但是,当我这样做时,我收到错误消息,尽管我的结构类似于种子,但Windows无法找到指定的路径。
我的结构:
dir
--app.js
--index.html
--node_modules
--package.json
Run Code Online (Sandbox Code Playgroud) 我只是想从http.server提供PDF文件。这是我的代码:
from http.server import BaseHTTPRequestHandler, HTTPServer
class MyServer(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'application/pdf')
self.send_header('Content-Disposition', 'attachment; filename="file.pdf"')
self.end_headers()
# not sure about this part below
self.wfile.write(open('/filepath/file.pdf', 'rb'))
myServer = HTTPServer(('localhost', 8080), MyServer)
myServer.serve_forever()
myServer.server_close()
Run Code Online (Sandbox Code Playgroud)
我不确定file.pdf现在该如何回应,却一无所获。我相信标头是正确的,但我无法设法将实际文件发送过来。
servlets basehttpserver simplehttpserver httpserver python-3.x
httpserver ×10
angularjs ×2
java ×2
python-3.x ×2
asp.net ×1
asynchronous ×1
block ×1
c# ×1
go ×1
image ×1
java-server ×1
localhost ×1
node.js ×1
p2p ×1
php ×1
post ×1
prolog ×1
python ×1
servlets ×1
swi-prolog ×1