using System.Net.Http;
namespace HttpClientTest
{
public class Program
{
public static void Main(string[] args)
{
for (var i = 0; i < 10; i++)
{
using (var httpClient = new HttpClient())
{
var result = httpClient.
GetAsync("http://stackoverflow.com/").
Result;
}
}
}
}
}
我注意到netstat的套接字是打开的:
TCP 10.200.60.168:2722 151.101.193.69:http TIME_WAIT
TCP 10.200.60.168:2751 151.101.193.69:http TIME_WAIT
TCP 10.200.60.168:2752 151.101.193.69:http TIME_WAIT
TCP 10.200.60.168:2753 151.101.193.69:http TIME_WAIT
TCP 10.200.60.168:2754 151.101.193.69:http TIME_WAIT
TCP 10.200.60.168:2755 151.101.193.69:http TIME_WAIT
TCP 10.200.60.168:2756 151.101.193.69:http TIME_WAIT
TCP 10.200.60.168:2757 151.101.193.69:http TIME_WAIT
TCP 10.200.60.168:2758 151.101.193.69:http TIME_WAIT
TCP 10.200.60.168:2759 151.101.193.69:http TIME_WAIT
这是意料之中的行为吗?我是否需要显式地将连接头值设置为close以防止这种情况发生?
httpClient.
DefaultRequestHeaders.
Connection.
Add("close");
HttpClient
的每个实例都将其连接池化以获得更好的性能,但这意味着每个实例还将池化的连接保留在不使用时的TIME_WAIT中。
HttpClient
实际上是线程安全的、可重入的,并且是为扩展使用而设计的;在程序退出之前,不应处理它(即使它实现了IDisposable
)。您应该在整个应用程序中共享HttpClient
的一个实例,以利用这一点。
更多信息可以在这里找到。
我编写了简单的服务器/客户端程序,其中客户端将一些硬编码数据以小块形式发送给服务器程序,服务器程序正在等待数据,以便将其打印到终端。在客户端,我在循环中调用send(),同时有更多的数据要发送,而在服务器上,我使用read()执行同样的操作,即返回的字节数为 如果我在完成发送后专门在客户端的套接字上调用close(),那么这个示例非常有效,但如果我不这样做,服务器将不会实际退出read()循环,直
问题内容: 我是网络编程的新手。我有兴趣通过Java服务器和C客户端之间的套接字建立网络连接并保持连接无限打开的可能吗?我想保持连接打开状态以在客户端之间交换XML数据。 问题答案: 从理论上讲,可以无限期地打开服务器套接字;但是,使用客户端套接字是不可能的。主要原因是因为客户端套接字取决于处理数据的服务器端套接字,并且服务器套接字可能会关闭连接。 尽管可以无限期地保持连接打开,但实际情况通常会确
我一直在思考为什么JDBC只是阻塞操作,为什么我不能为假设的事件处理程序onResultSetArrived(ResultSet rs)设置一些侦听器。为什么我必须为每个JDBC查询阻塞一个线程。 过了一段时间,我深入研究了Java套接字(我想JDBC是构建在它们之上的),并意识到也没有任何事件处理。提供非阻塞读取的唯一选项是通过available()方法,但这非常低效,因为必须在循环中定期检查它
问题内容: 我有一组具有保持活动状态的TCP套接字(间隔1分钟),由 循环(选择读取)控制。 如果集合中的一个套接字发生了保持活动超时,是否会返回错误? 哪个错误会返回? 问题答案: 如果为其选择的其中一个套接字发出了错误信号,则它本身不会返回错误。[实际上,API无法以这种方式指示每个套接字的错误,因为两个不同的套接字可能在的一次调用中就各自获取挂起的错误。哪一个会回来?] 在循环的每次迭代之后
问题内容: 我正在使用POST方法。我需要创建一次,并且应该使用Keep Alive Connection。但是我认为,它每次都会建立一个新的连接。 因此,我需要使用 保持活动 连接。 这是我的代码段,很多帮助将不胜感激。 而且logcat日志是: 问题答案: 10:07:29.746:D / org.apache.http.headers(1529):>>连接:保持活动 您正在要求保持活动状态。
我有两个服务器“A”(由我的朋友构建)和“B”(由我构建,使用Netty 4.1)。当客户端发送命令时,此服务器“A”和“B”会返回一些响应。我尝试使用简单的JAVA客户端套接字访问该服务器。以下是java客户端代码: 当将客户机连接到服务器A(非netty)时,方法会给出如下输出: 但是,当我尝试连接到服务器“B”(使用netty)时,输出如下: 为什么会发生这种情况?顺便说一下,在服务器B中,