相关疑难解决方法(0)

如何检测TCP套接字断开(使用C Berkeley套接字)

我正在使用循环从交流Berkeley套接字读取消息,但我无法检测套接字何时断开连接,所以我接受新的连接.请帮忙

while(true) {
            bzero(buffer,256);
            n = read(newsockfd,buffer,255);
            printf("%s\n",buffer);        
}
Run Code Online (Sandbox Code Playgroud)

c sockets network-programming tcp

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

正确关闭SSLSocket

我想在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)

java sockets ssl

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

接收HTTP标头

在教育方面,我正在用C++编写HTTP服务器.收到请求时,如何知道客户端何时完成发送标头?是否有义务一次性发送所有标题?如果客户发送G,然后5秒后E,然后T......?我应该等待超时并且如果花费太长时间就关闭连接吗?我是否应该在获得第一个字节后立即开始解析以了解请求是否无效?

我知道有很多这样的库,我只是重新发明轮子以更好地理解Web在不同层的工作方式.我无法找到他们如何处理我的问题.

c++ webserver parsing http httprequest

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

标签 统计

sockets ×2

c ×1

c++ ×1

http ×1

httprequest ×1

java ×1

network-programming ×1

parsing ×1

ssl ×1

tcp ×1

webserver ×1