• 17.网络编程


    1.什么叫网络编程
    通过套接字来进行网络传输数据,也是用字节输入输出流来读取和发送数据

    2.C/S模式:
    C:customer客户端:发送链接请求
    S:server:服务端,监听客户端的请求
    会话:一次通讯可以多次交换数据

    3.网络传输协议
    TCP/IP:建立直接管道,传输数据稳定,按顺序接收
    UDP:不过传输过程,只关注发送和接收的结果,不一定按顺序接收数据
    HTTP:网页传输

    4.实现步骤:见案例
      a.写服务端,建立监听
      b.写客户端,发送链接请求
      c.建立链接后用字节流完成数据交互

    5.例子

      客户端:

     1 package com.demo1123;
     2 
     3 import java.io.IOException;
     4 import java.io.OutputStream;
     5 import java.io.PrintWriter;
     6 import java.net.Socket;
     7 import java.net.UnknownHostException;
     8 import java.util.Scanner;
     9 
    10 public class Client {
    11     public static void main(String[] args) throws Exception, IOException {
    12         //客户端发送请求去链接服务端
    13         Socket socket = new Socket("192.168.5.145", 9999);
    14         System.out.println("链接服务端成功!!!");
    15         
    16         Scanner sc = new Scanner(System.in);
    17         
    18         OutputStream out = socket.getOutputStream();
    19         PrintWriter pw = new PrintWriter(out);//字节输出流封装成字符输出流
    20         while(true){
    21             System.out.println("请输入要发送的内容:");
    22             String str = sc.next();
    23             
    24             pw.println(str);//一定要带ln换行,因为客户端是用readerLine来接收数据的
    25             pw.flush();
    26         }
    27     }
    28 }

      服务端:

     1 package com.demo1123;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.IOException;
     5 import java.io.InputStream;
     6 import java.io.InputStreamReader;
     7 import java.net.ServerSocket;
     8 import java.net.Socket;
     9 import java.util.zip.InflaterOutputStream;
    10 
    11 public class Server {
    12     public static void main(String[] args) {
    13         try {
    14             new Server().tcpServer();
    15         } catch (Exception e) {
    16             e.printStackTrace();
    17         }
    18     }
    19     
    20     //tcp协议
    21     public void tcpServer() throws Exception{
    22         //创建服务端,打开监听
    23         ServerSocket server = new ServerSocket(9999);
    24         System.out.println("服务已启动.......");
    25         //获取网络套接字,套接字对象是专门负责数据的发送和接收
    26         Socket socket = server.accept();
    27         System.out.println("客户端链接进来成功,客户端的ip是"+socket.getInetAddress());
    28         InputStream in = socket.getInputStream();//从数据包中读取数据输入流
    29         //把字节流转换成字符流
    30         InputStreamReader isr = new InputStreamReader(in);//字节流转换为字符流
    31         //构造缓冲字符流来读取文本数据。好处是可以识别换行符
    32         BufferedReader reader = new BufferedReader(isr);
    33         String s;
    34         while((s=reader.readLine())!=null){
    35             System.out.println("我是服务端,我接收到的数据是:"+s);
    36         }
    37     }
    38 }
  • 相关阅读:
    【PS】Colorful and flowing word tutorials 彩色流光字教程
    【Language】Popular Javascript Convention on Github
    java 题目
    swift 构造过程
    swift 继承相关
    swift 方法功能
    javascript闭包
    IOS swift学习地址
    guava 工具包
    数字和大写字母字符串
  • 原文地址:https://www.cnblogs.com/wlxslsb/p/10671964.html
Copyright © 2020-2023  润新知