Java网络编程学习

来源:互联网 发布:centos打包iso文件 编辑:程序博客网 时间:2024/05/21 09:00

Java网络编程学习:


socket

创建Socket

下面的示例代码是连接到IP地址为78.64.84.171服务器上的80端口,这台服务器就是我们的Web服务器(www.jenkov.com),而80端口就是Web服务端口。

Socket socket = new Socket("78.46.84.171", 80);


Socket发送数据:

要通过Socket发送数据,我们需要获取Socket的输出流(OutputStream),示例代码如下:

Socket socket = new Socket("jenkov.com", 80);OutputStream out = socket.getOutputStream(); out.write("some data".getBytes());out.flush();out.close(); socket.close();


代码非常简单,但是想要通过网络将数据发送到服务器端,一定不要忘记调用flush()方法。操作系统底层的TCP/IP实现会先将数据放入一个更大的数据缓存块中,而缓存块的大小是与TCP/IP的数据包大小相适应的。(译者注:调用flush()方法只是将数据写入操作系统缓存中,并不保证数据会立即发送)


Socket读取数据:

Socket中读取数据,我们就需要获取Socket的输入流(InputStream),代码如下:

Socket socket = new Socket("jenkov.com", 80);InputStream in = socket.getInputStream(); int data = in.read();//... read more data... in.close();socket.close();


代码也并不复杂,但需要注意的是,从Socket的输入流中读取数据并不能读取文件那样,一直调用read()方法直到返回-1为止,因为对Socket而言,只有当服务端关闭连接时,Socket的输入流才会返回-1,而是事实上服务器并不会不停地关闭连接。假设我们想要通过一个连接发送多个请求,那么在这种情况下关闭连接就显得非常愚蠢。


可以通过调用close方法关闭连接。



URL + URLConnection

java.net包中包含两个有趣的类:URL类和URLConnection类。这两个类可以用来创建客户端到web服务器(HTTP服务器)的连接。下面是一个简单的代码例子:

URL url = new URL("http://jenkov.com");URLConnection urlConnection = url.openConnection();InputStream input = urlConnection.getInputStream();int data = input.read();while(data != -1){System.out.print((char) data);data = input.read();}input.close();


GET  POST

默认情况下URLConnection发送一个HTTP GET请求到web服务器。如果你想发送一个HTTP POST请求,要调用URLConnection.setDoOutput(true)方法,如下:

URL url = new URL("http://jenkov.com");URLConnection urlConnection = url.openConnection();urlConnection.setDoOutput(true);OutputStream output = urlConnection.getOutputStream();


URLs到本地文件

URL也被叫做统一资源定位符。如果你的代码不关心文件是来自网络还是来自本地文件系统,URL类是另外一种打开文件的方式。
下面是一个如何使用URL类打开一个本地文件系统文件的例子:

URL url = new URL("file:/c:/data/test.txt");URLConnection urlConnection = url.openConnection();InputStream input = urlConnection.getInputStream();int data = input.read();while(data != -1){System.out.print((char) data);data = input.read();}input.close();

注意:这和通过HTTP访问一个web服务器上的文件的唯一不同处就是URL:”file:/c:/data/test.txt”。



JarURLConnection


JavaJarURLConnection类用来连接Java Jar文件。一旦连接上,你可以获取Jar文件的信息。一个简单的例子如下:

String urlString = "http://butterfly.jenkov.com/"                 + "container/download/"                 + "jenkov-butterfly-container-2.9.9-beta.jar";URL jarUrl = new URL(urlString);JarURLConnection connection = new JarURLConnection(jarUrl);Manifest manifest = connection.getManifest();JarFile jarFile = connection.getJarFile();//do something with Jar file...


InetAddress

InetAddress Java IP 地址的封装。这个类的实例经常和 UDP DatagramSockets SocketServerSocket 类一起使用。

InetAddress 没有公开的构造方法,因此你必须通过一系列静态方法中的某一个来获取它的实例。

InetAddress address = InetAddress.getByName("jenkov.com");

InetAddress address = InetAddress.getByName("78.46.84.171");

InetAddress address = InetAddress.getLocalHost();

原创粉丝点击