java通信——单客户端与服务端通信

来源:互联网 发布:iphone手机助手软件 编辑:程序博客网 时间:2024/06/15 22:40

本例未运用多线程,实现单客户端与服务端通信

服务端:

  1. 用指定的端口实例化一个SeverSocket对象。服务器就可以用这个端口监听从客户端发来的连接请求。
  2. 调用ServerSocket的accept()方法,以在等待连接期间造成阻塞,监听连接从端口上发来的连接请求。
  3. 利用accept方法返回的客户端的Socket对象,进行读写IO的操作
  4. 关闭打开的流和Socket对象
    package com.oaec;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;/** * 服务器主类 *  * @author Administrator *  */public class Service {public static void main(String[] args) throws IOException {/** * 基于TCP协议的Socket通信,实现用户登录,服务端 */// 1、创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口ServerSocket serverSocket = new ServerSocket(8080);// 2、调用accept()方法开始监听,等待客户端的连接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("Hello,我是服务器,客户端说:" + info);}socket.shutdownInput();// 关闭输入流// 4、获取输出流,响应客户端的请求OutputStream os = socket.getOutputStream();PrintWriter pw = new PrintWriter(os);pw.write("Hello World!");pw.flush();// 5、关闭资源pw.close();os.close();br.close();isr.close();is.close();socket.close();serverSocket.close();}}


客户端:

  1. 用服务器的IP地址和端口号实例化Socket对象。
  2. 调用connect方法,连接到服务器上。
  3. 获得Socket上的流,把流封装进BufferedReader/PrintWriter的实例,以进行读写
  4. 利用Socket提供的getInputStream和getOutputStream方法,通过IO流对象,向服务器发送数据流
  5. 关闭打开的流和Socket。
    package com.oaec;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) throws IOException {// 1、创建客户端Socket,指定服务器地址和端口Socket socket = new Socket("192.168.0.1", 8080);// 2、获取输出流,向服务器端发送信息OutputStream os = socket.getOutputStream();// 字节输出流PrintWriter pw = new PrintWriter(os);// 将输出流包装成打印流pw.write("用户名:admin;密码:admin");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("Hello,我是客户端,服务器说:" + info);}// 4、关闭资源br.close();is.close();pw.close();os.close();socket.close();}}



                                             
1 0
原创粉丝点击