一、Java中的网络通信是通过Socket实现的,socket分为Server Socket和Socket两大类:Server Socket用于服务器端;Socket用于建立网络连接时使用,客户端也可使用Socket发起请求并传输数据。
注:
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
1、服务器端Server Socket的使用步骤:
(1)创建Server Socket监听端口。
如:
Server Socketserver=new ServerSocket(6666);
(2)调用accept( )方法进行监听。accept方法是阻塞方法,也就是说调用accept方法后程序会停下来等待连接请求,在接受请求之前程序将不会继续执行,当接收到请求后(连接成功)accept方法返回一个Socket实例。
如:
Socket socket=server.accept();
(3)接受请求后使用Socket进行通信,创建Buffered-reader用于读取数据
如:
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = is.readLine();
System.out.println("received frome client:" + line);
(4)创建Print-writer,用于发送数据
如:
PrintWriter pw = new PrintWriter(socket.getOutputStream());
pw.println("this data is from server");
pw.flush();
**(5)关闭资源**
如:
pw.close();
is.close();
socket.close();
server.close();
2、客户端Client的 Socket使用步骤:
(1)创建一个Socket,把目标主机的地址和端口号传入
(2)跟服务器端建立连接,创建完Socket实例
如:
Socket socket = new Socket("192.168.6.42",8080);
(3)创建Writer和Reader来传输数据
3.1使用PrintWriter写数据
PrintWriter pw = new PrintWriter(socket.getOutputStream());
3.2使用BufferedReader读数据
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
3.3发送数据
pw.println(msg);
pw.flush();
3.4接收数据
String line = is.readLine();
System.out.println("received from server" + line);
(4)数据传输完成后释放资源关闭连接
pw.close();
is.close();
socket.close();