转载自并发编程网 – ifeve.com
Java提供了非常易用的网络API,调用这些API我们可以很方便的通过建立TCP/IP或UDP套接字,在网络之间进行相互通信,其中TCP要比UDP更加常用
Java TCP网络基础
通常情况下,客户端打开一个连接到服务器端的TCP/IP连接,然后客户端开始与服务器之间通信,当通信结束后客户端关闭连接,过程如下图所示:
Java中Socket类和ServerSocket类
当客户端想要打开一个连接到服务器的TCP/IP连接时,就要使用到Java Socket类。socket类只需要被告知连接的IP地址和TCP端口,其余的都有Java实现。
public void scoketTest () throws UnknownHostException, IOException{
Socket so = new Socket("192.168.200.13",80);
OutputStream out= so.getOutputStream();
out.write("nihao".getBytes());
out.flush();
out.close();
InputStream in=so.getInputStream();
in.read();
in.close();
so.close();
}
假如我们想要打开一个监听服务,来监听客户端连接某些指定TCP端口的连接,那就需要使用Java ServerSocket类。当客户端通过Socket连接服务器端的ServerSocket监听时,服务器端会指定这个连接的一个Socket,此时客户端与服务器端间的通信就变成Socket与Socket之间的通信。
public void serverSocket () throws IOException{
ServerSocket serverSocket = new ServerSocket(9000);
Socket so = serverSocket.accept();
so.close();
serverSocket.close();
}
在java.net包中包含两个有趣的类:URL类和URLConnection类。这两个类可以用来创建客户端到web服务器(HTTP服务器)的连接
public void urlTest() throws IOException {
URL url = new URL("http://www.baidu.com");
URLConnection connection =url.openConnection();
InputStream in= connection.getInputStream();
int data = in.read();
while (data!=-1) {
System.out.println((char)data);
data = in.read();
}
in.close();
connection.setDoOutput(true);
OutputStream out= connection.getOutputStream();
}
URL类打开一个本地文件系统文件
private void urlReadFileTest() throws Exception {
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();
}
转载于:https://www.cnblogs.com/zjwwljty/p/6873759.html