我正在使用循环从交流Berkeley套接字读取消息,但我无法检测套接字何时断开连接,所以我接受新的连接.请帮忙
while(true) {
bzero(buffer,256);
n = read(newsockfd,buffer,255);
printf("%s\n",buffer);
}
Run Code Online (Sandbox Code Playgroud) 我想在Java中实现SSL代理.我基本上打开两个套接字browser-proxy,proxy-server然后运行两个线程来写入proxy-server它们读取的内容browser-proxy,反之亦然.每个线程看起来像这样:
while (true) {
nr = in.read(buffer);
if (nr == -1) System.out.println(sockin.toString()+" EOF "+nr);
if (nr == -1) break;
out.write(buffer, 0, nr);
}
sockin.shutdownInput();
sockout.shutdownOutput(); // now the second thread will receive -1 on read
Run Code Online (Sandbox Code Playgroud)
每个线程只关闭输入套接字,以便最终关闭两个套接字.
但是,如果我想使用它,我该怎么办SSLSocket?似乎shutdownOutput/Input那里不支持这些方法.这是我得到的例外.
Exception in thread "Thread-35" java.lang.UnsupportedOperationException: \
The method shutdownInput() is not supported in SSLSocket
at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.shutdownInput(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
我想出的是:
try {
while (true) {
nr = in.read(buffer);
if (nr == -1) System.out.println(sockin.toString()+" …Run Code Online (Sandbox Code Playgroud) 在教育方面,我正在用C++编写HTTP服务器.收到请求时,如何知道客户端何时完成发送标头?是否有义务一次性发送所有标题?如果客户发送G,然后5秒后E,然后T......?我应该等待超时并且如果花费太长时间就关闭连接吗?我是否应该在获得第一个字节后立即开始解析以了解请求是否无效?
我知道有很多这样的库,我只是重新发明轮子以更好地理解Web在不同层的工作方式.我无法找到他们如何处理我的问题.