面向网络编程---单层交互:
客户端说明:
- /*
- * 实现TCP客户端,链接到服务器
- * 和服务器实现数据交互
- * 实现TCP客户端的类 java.net.Scoket
- * 构造方法:
- * Socket sco = new Sockte( String ip ,int 端口号);
- * 注意:这个构造方法只要运行就会去查找 服务器 如果链接失败 就会抛出异常
- * OutputStream getOutputStream() 这个方法是返回套接字的输出流
- * 注意:这个输出流 是将数据 输出服务器
- * InputStream getInputStream(); 这个方法 返回 套接字的输入流
- * 注意: 这个输入流 从服务器中读取数据
- *
- * 如果要实现 客户端与服务器端的交互 必须有使用Socket套接字的 流 自己实例化的流不可以!!!
- *
- * */
客户端代码:
- public static void main(String[] args) throws Exception {
- //创建Socket 对象 链接服务器
- Socket socket = new Socket("127.0.0.1", 8888);
- //通过套接字 对象Socket 获取 输出流 将 数据写入服务器
- OutputStream out = socket.getOutputStream();
- //向服务器写入数据
- out.write("咕咕咕-买了否冷".getBytes());
- //关闭数据
- //socket.close();
- socket.shutdownOutput();
- }
服务器说明:
- /*
- * 实现TCP服务器程序
- * 表示服务器程序的类 java.net.ServerSocket
- * 构造方法:
- * ServerSocket(int 端口);
- * **必须要获得客户端的套接字对象 Socket
- * Socket socket = server.accept();
- * */
服务器代码:
- public static void main(String[] args) throws Exception{
- //创建ServerSocket 对象
- ServerSocket server = new ServerSocket(8888);
- //调用服务器套接字 对象 中的方法accept();
- Socket socket = server.accept();
- try {
- InputStream in = socket.getInputStream();
- int len = 0;
- byte[] bytes = new byte[1024];
- while((len = in.read(bytes)) != -1){
- System.out.println(new String(bytes, 0, len));
- }
- } catch (Exception e) {
- throw new RasterFormatException("从服务器读取发生异常-原因 服务器可能关闭了流对象");
- }
- }