java nio scoket的连接问题 10
下面是一个测试例子,主要是连接地址不同,请在注释的地方切换分别测试.希望能详细讲解一下这两个过程,特别是连127.0.0.1这个1)InetSocketAddressad...
下面是一个测试例子,主要是连接地址不同,请在注释的地方切换分别测试.希望能详细讲解一下这两个过程,特别是连127.0.0.1这个
1) InetSocketAddress addr = new InetSocketAddress("www.baidu.com", 80);
2) //InetSocketAddress addr = new InetSocketAddress("127.0.0.1", 80);
/**
* NIO_baidu.java
*
* Version 1.0
*
* 2014-1-16
*
* Copyright www.wangjiu.com
*/
package com._0116;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
/**
* TODO (描述类的功能)
*
* @author d
* 2014-1-16
*
*/
public class NIO_baidu {
/**
* TODO (描述方法的作用)
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// 用下面两个连接地址分别测试
InetSocketAddress addr = new InetSocketAddress("www.baidu.com", 80);
//InetSocketAddress addr = new InetSocketAddress("127.0.0.1", 80);
SocketChannel channel = SocketChannel.open(addr);
System.out.println();
byte[] header = "GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n".getBytes();
ByteBuffer buf = ByteBuffer.allocate(header.length);
buf.put(header);
buf.flip();
channel.write(buf);
buf = ByteBuffer.allocate(1024);
int count = channel.read(buf);
while(count != -1) {
buf.flip();
while(buf.hasRemaining()){
System.out.print((char)buf.get());
}
buf.clear();
count = channel.read(buf);
System.out.print(count);
}
channel.close();
}
}
第一个的返回结果是:就是百度首页的html代码,太长了贴不下.=============第二个返回结果是:HTTP/1.1 200 OKDate: Fri, 17 Jan 2014 02:39:29 GMTServer: Apache/2.2.25 (Win32)Last-Modified: Sat, 20 Nov 2004 07:16:24 GMTETag: "80c5b3c60-2c-3e94b66a46200"Accept-Ranges: bytesContent-Length: 44Content-Type: text/html<html><body><h1>It works!</h1></body></html>
====================
连接127.0.0.1时走的本地服务器,这时你可以直接访问http://127.0.0.1他返回的就是it works页面,没有请求百度.看http协议,api里很通俗看什么呢? 就是这样,没满意答案. 展开
1) InetSocketAddress addr = new InetSocketAddress("www.baidu.com", 80);
2) //InetSocketAddress addr = new InetSocketAddress("127.0.0.1", 80);
/**
* NIO_baidu.java
*
* Version 1.0
*
* 2014-1-16
*
* Copyright www.wangjiu.com
*/
package com._0116;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
/**
* TODO (描述类的功能)
*
* @author d
* 2014-1-16
*
*/
public class NIO_baidu {
/**
* TODO (描述方法的作用)
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// 用下面两个连接地址分别测试
InetSocketAddress addr = new InetSocketAddress("www.baidu.com", 80);
//InetSocketAddress addr = new InetSocketAddress("127.0.0.1", 80);
SocketChannel channel = SocketChannel.open(addr);
System.out.println();
byte[] header = "GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n".getBytes();
ByteBuffer buf = ByteBuffer.allocate(header.length);
buf.put(header);
buf.flip();
channel.write(buf);
buf = ByteBuffer.allocate(1024);
int count = channel.read(buf);
while(count != -1) {
buf.flip();
while(buf.hasRemaining()){
System.out.print((char)buf.get());
}
buf.clear();
count = channel.read(buf);
System.out.print(count);
}
channel.close();
}
}
第一个的返回结果是:就是百度首页的html代码,太长了贴不下.=============第二个返回结果是:HTTP/1.1 200 OKDate: Fri, 17 Jan 2014 02:39:29 GMTServer: Apache/2.2.25 (Win32)Last-Modified: Sat, 20 Nov 2004 07:16:24 GMTETag: "80c5b3c60-2c-3e94b66a46200"Accept-Ranges: bytesContent-Length: 44Content-Type: text/html<html><body><h1>It works!</h1></body></html>
====================
连接127.0.0.1时走的本地服务器,这时你可以直接访问http://127.0.0.1他返回的就是it works页面,没有请求百度.看http协议,api里很通俗看什么呢? 就是这样,没满意答案. 展开
4个回答
展开全部
看看API吧,主要是看看关键的几个方法,理解起来就容易了
追问
我看了InetSocketAddress ,SocketChannel的api,还是没明白.
能不能给点细节,有点针对性,谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
查API看一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-17
展开全部
等待解决方案
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-17
展开全部
…………………………
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询