java中网络相关类
以下为最基础的服务器与单个客户的编程demo:
服务端
package demo_Socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
// 1,创建一个服务器端socket,即serverSocket,指定绑定的端口,并监听
ServerSocket serversocket = new ServerSocket(9985);
// 2,使用accept()方法监听,等待客户端链接
System.out.println("服务器正在启动,等待客户端连接..");
Socket socket = serversocket.accept();
// 3,获取输入流,读取客户端信息
InputStream is = socket.getInputStream();// 字节输入流
// 将字节流转换为字符流
InputStreamReader isr = new InputStreamReader(is);
// 以缓冲的方式读取
BufferedReader br = new BufferedReader(isr);
String info = null;
while ((info = br.readLine()) != null) {
System.out.println("我是服务器,客户端说: " + info);
}
socket.shutdownInput();
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);
pw.write("欢迎使用");
pw.flush();
//5,关闭资源
pw.close();
os.close();
br.close();
isr.close();
is.close();
socket.close();
serversocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端:
package demo_Socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
// 1.创建客户端Socket,指定服务器地址和端口
try {
//2.获取输出流,向服务器端发送信息
Socket socket = new Socket("localhost", 9985);
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("用户名:admin;密码:123");
pw.flush();
socket.shutdownOutput();
//3.打开输入流,读取服务端的响应信息
InputStream is=socket.getInputStream();
//包装成缓冲
BufferedReader br=new BufferedReader(
new InputStreamReader(is));
String info = null;
while ((info = br.readLine()) != null) {
System.out.println("我是客户端,服务器说: " + info);
}
//4.关闭各种资源
br.close();
is.close();
pw.close();
os.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
当关闭输出流时,与输出流相关连的socket也会被关闭