RT,请大家用尽量简短语言告诉我,或者告诉我一些资料,我自己看也成,我google出的东西都很零碎。
个人在模拟客户端进行服务端连接的时候就是通过URL openConnection 然后传输数据等等,可是看到好多用socket连接的,比如httpclient中的例子,他不管是get还是post都用到socket我很纳闷。
我对http的理解仅仅停留在 请求和响应,头和实体等等,所以在我用httpclient4.0.1的时候有点无头绪,不知道一个连接的流程是怎样的,
[code="java"] try {
String[] targets = {
"/",
"/servlets-examples/servlet/RequestInfoExample",
"/somewhere%20in%20pampa"};
for (int i = 0; i < targets.length; i++) {
if (!conn.isOpen()) {
Socket socket = new Socket(host.getHostName(), host.getPort());
conn.bind(socket, params);
}
BasicHttpRequest request = new BasicHttpRequest("GET", targets[i]);
System.out.println(">> Request URI: " + request.getRequestLine().getUri());
request.setParams(params);
httpexecutor.preProcess(request, httpproc, context);
HttpResponse response = httpexecutor.execute(request, conn, context);
response.setParams(params);
httpexecutor.postProcess(response, httpproc, context);
System.out.println("<< Response: " + response.getStatusLine());
System.out.println(EntityUtils.toString(response.getEntity()));
System.out.println("==============");
if (!connStrategy.keepAlive(response, context)) {
conn.close();
} else {
System.out.println("Connection kept alive...");
}
}[/code]
附上面的代码,请尽量解释下。
[b]问题补充:[/b]
[quote]你应该去看看tcp/ip协议[/quote]
这兄台速度忒快了,其实我就在等你的。
看那些协议有用么?比如一个连接的流程该怎么走,步骤怎么养,协议都规范了?
还有tcp ip协议有多少内容,不是我偷懒,实在是时间不充裕
TCP-IP详解卷一:协议
有30章,你可以只看一些就够理解tcp,socket之类的,没时间当然就选重点看
你应该去看看tcp/ip协议
应用层协议---http,ftp,smtp //看到没,http只不过是封装了tcp协议的上一层协议,它的底层还是tcp协议(java中也就是Socket)
传输层协议---tcp,udp //java中的Socket也就是封装了这一层的协议,
网络层协议----ip
数据链路层协议
90%的搞java web的人应该都是不懂网络编程的,也就是Socket编程,因为一般也没必要涉及这块底层协议
如果你想好好去了解网络的底层协议,连接是怎么建立和关闭的,那就必须得去看看
“TCP-IP详解”,它共有3卷,
一般只用去看“TCP-IP详解卷一:协议”就够理解这些协议了,