TCP编程

1.客户端
    * 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
    * 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
    * 输入流可以读取服务端输出流写出的数据
    * 输出流可以写出数据到服务端的输入流
* 2.服务端
    * 创建ServerSocket(需要指定端口号)
    * 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
    * 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
    * 输入流可以读取客户端输出流写出的数据
    * 输出流可以写出数据到客户端的输入流

 

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class demon1_client {
    /*
     * 1.客户端
    * 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
    * 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
    * 输入流可以读取服务端输出流写出的数据
    * 输出流可以写出数据到服务端的输入流
     */
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 12345);
        
        InputStream is = socket.getInputStream();       //客户端输入流
        OutputStream os = socket.getOutputStream();   
        
        byte[] arr = new byte[1024];
        int len = is.read(arr);     //   读入  服务端歇过来的数据
        System.out.println(new String(arr,0,len));
        
        os.write("学习挖掘机哪家强?".getBytes());   // 客户端向服务器写数据
        
        socket.close();
        
    }

}
public class demon1_server {
    /*
     * 2.服务端
    * 创建ServerSocket(需要指定端口号)
    * 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
    * 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
    * 输入流可以读取客户端输出流写出的数据
    * 输出流可以写出数据到客户端的输入流

     */
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(12345);
        Socket socket = server.accept();       //  接收客户端的 socket  
        
        InputStream is = socket.getInputStream();       //客户端输入流
        OutputStream os = socket.getOutputStream();
        
        os.write("百度一下,你就知道".getBytes());   // 服务器向客户端写出数据
        
        byte[] arr = new byte[1024];
        int len = is.read(arr);
        System.out.println(new String(arr,0,len));     //  读取客户端发来的数据
        
        socket.close();
    }

}

 

 

 

 

代码优化

网络编程(TCP协议)
* 1.客户端
    * 创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
    * 调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
    * 输入流可以读取服务端输出流写出的数据
    * 输出流可以写出数据到服务端的输入流
* 2.服务端
    * 创建ServerSocket(需要指定端口号)
    * 调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
    * 调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
    * 输入流可以读取客户端输出流写出的数据
    * 输出流可以写出数据到客户端的输入流

###26.17_网络编程(TCP协议代码优化)
* 客户端

        Socket socket = new Socket("127.0.0.1", 9999);        //创建Socket指定ip地址和端口号
        InputStream is = socket.getInputStream();            //获取输入流
        OutputStream os = socket.getOutputStream();            //获取输出流
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        PrintStream ps = new PrintStream(os);
        
        System.out.println(br.readLine());
        ps.println("我想报名就业班");
        System.out.println(br.readLine());
        ps.println("爷不学了");
        socket.close();
* 服务端

        ServerSocket server = new ServerSocket(9999);    //创建服务器
        Socket socket = server.accept();                //接受客户端的请求
        InputStream is = socket.getInputStream();        //获取输入流
        OutputStream os = socket.getOutputStream();        //获取输出流
        
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        PrintStream ps = new PrintStream(os);
        
        ps.println("欢迎咨询XXXX");
        System.out.println(br.readLine());
        ps.println("报满了,请报下一期吧");
        System.out.println(br.readLine());
        server.close();
        socket.close();

网络编程(服务端是多线程的)
    ServerSocket server = new ServerSocket(9999);    //创建服务器
        while(true) {
            final Socket socket = server.accept();                //接受客户端的请求
            new Thread() {
                public void run() {
                    try {
                        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                        PrintStream ps = new PrintStream(socket.getOutputStream());
                        ps.println("欢迎咨询XXXX");
                        System.out.println(br.readLine());
                        ps.println("报满了,请报下一期吧");
                        System.out.println(br.readLine());
                        socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }.start();
        }
    }

 

转载于:https://www.cnblogs.com/yaobiluo/p/11357943.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值