使用TCP协议传输信息演示

演示1

//客户端
class  Client{
    public static void main(String[] args){
        //客户端发数据到服务端
        /*
         * Tcp传输,客户端建立的过程。
         * 1,创建tcp客户端socket服务。使用的是Socket对象。
         *      建议该对象一创建就明确目的地。要连接的主机。 
         * 2,如果连接建立成功,说明数据传输通道已建立。
         *      该通道就是socket流 ,是底层建立好的。 既然是流,说明这里既有输入,又有输出。
         *      想要输入或者输出流对象,可以找Socket来获取。 
         *      可以通过gteetOutputStream(),和getInputStream()来获取两个字节流。
         * 3,使用输出流,将数据写出。 
         * 4,关闭资源。 
         */
        Socket  s=new Socket(InteAddress.getByName("192.168.1.108"),10000);

    String text="你好服务端";
    OutputStream os=s.getOutPutStream();
    os.write(os.getByte(),0,os.getbyte().length);
    os.close();
    s.close();

    }

}


//服务端

class Server{
    public static void main(String[] args){
    //      服务端接收客户端发送过来的数据,并打印在控制台上。 
        /*
         * 建立tcp服务端的思路:
         * 1,创建服务端socket服务。通过ServerSocket对象。
         * 2,服务端必须对外提供一个端口,否则客户端无法连接。
         * 3,获取连接过来的客户端对象。
         * 4,通过客户端对象获取socket流读取客户端发来的数据 
         *      并打印在控制台上。
         * 5,关闭资源。关客户端,关服务端。 
         */

    ServerSocket  ss=new ServerSocket(10000);
    ss.accept();
    InputStream is=ss.getInputStream();
    byte[]  buf=new byte[1024];
    is.read(buf);
    String s=new String(buf,0,buf.length);
    System.out.println(s);
    is.close();
    ss.close();
    }

}

TCP协议-服务端和客户端交互

class  Client{
    public static void main(String[] args){
        System.out.println("客户端");
        Socket s=new Socket(InteAddress.getByName(192.168.1.108),10003);

    OutputStream os=s.getOutputStream();
    String text="你好服务端";
    os.write(text.getByte());

    //接收服务端发送回来的数据
    InputStream is=s.getInputStream();
    byte[] buf=new byte[1024];
    is.read(buf);

    String answer=new String(buf,0,buf.length);

    System.out.println(answer);

    }

}


class  Server{
    public static void main(String[] args){
        System.out.println("服务端");
        ServerSocket  ss=new ServerSocket(10003);
        ss.acceept();
        OutputStream os=ss.getOutputStream();
        byte[] buf=new byte[1024];
        os.read(buf);

        String s=new String(buf,0,buf.length);

        InputStream is=ss.getInputStream();
        String answer="我是服务端,收到你的信息";
        is.writer(answer.getBytes());

        is.close();
        os.close();
        ss.close();

    }

}

TCP写一个简单的上传文件

//上传的客户端
public class UploadClient {
    public static void main(String[] args) throws IOException {
        File f=new File("c:\\client.txt");
        FileReader fr=new FileReader(f);
        BufferedReader br=new BufferedReader(fr);


        Socket s=new Socket("192.168.1.108", 10006);

        OutputStream sos=s.getOutputStream();
        PrintWriter pw=new PrintWriter(sos,true);
        String line=null;
        while((line=br.readLine())!=null){
            pw.println(line);

        }

        s.shutdownOutput();//告诉服务,客户端写完了

        //接收服务端,发送回来的提示
        InputStream sis=s.getInputStream();
        InputStreamReader isr=new InputStreamReader(sis);
        BufferedReader sbr=new BufferedReader(isr);
        String answer=sbr.readLine();
        System.out.println(answer);

        sis.close();
        sos.close();
        s.close();

    }
}


//上传的服务端
public class UploadServer {
    public static void main(String[] args) throws IOException {
        ServerSocket ss=new ServerSocket(10006);
        Socket s=ss.accept();
        //上传的文件的存储位置
        File f=new File("D:\\Server2.txt");
        FileWriter fw=new FileWriter(f);
        BufferedWriter bw=new BufferedWriter(fw);

        //
        InputStream sis=s.getInputStream();
        InputStreamReader sisr=new InputStreamReader(sis);
        BufferedReader  sbr=new BufferedReader(sisr);

        //
        String line=null;
        while((line=sbr.readLine())!=null){

            bw.write(line);
            bw.newLine();
            bw.flush();
        }
        PrintWriter out = new PrintWriter(s.getOutputStream(),true);
        out.println("上传成功");

        bw.close();

        s.close();
        ss.close();

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值