349 TCP通信程序练习1

349 TCP通信程序练习1(服务器给出反馈)

【练习1】

客户端,os发送数据,is接收服务器反馈

服务器,is接收数据,os给出反馈

——客户发,服务器接,返回反馈

【练习2】

客户端,数据来自键盘录入,直到输入886,则发送数据结束

服务器,接收数据,写屏

——客户录入然后发,多次发直至886,服务器接并显示

【练习3】

客户端,数据来自键盘录入,直到输入886,则发送数据结束(与2同)

服务端,接收到的数据写入文本文件

——客户录入然后发,多次发直至886,服务器接并写文件

【练习4】

客户端,数据来自文本文件

服务端,接收到的数据写入文本文件(与4同)

【练习5】

客户端,数据来自文本文件,接收服务器反馈

服务端,接收到的数据写入文本文件,给出反馈

【练习6】

客户端,数据来自文本文件,接收服务器反馈(与5同)

服务端,接收到的数据写入文本文件,给出反馈,用线程封装代码,为每一个客户端开启一个线程

【代码思路】

  • 创建Socket需要2个参数:(双引号)主机IP、端口号,创建完有异常,这里先抛出去。
  • 接下来获取输出流,s.getOutputStream生成左边内容,
  • os.write写数据,参数是一个字符串,就是要发送、接收的数据
  • 下面要接收服务器的反馈,s.getInputStream,生成左边内容
  • 读数据:new一个数组,长度1024。声明个int变量,用is.read赋值。new一个String对象,参数是数组、迁移量0、变量
  • 把发送、接收的数据写屏
  • 释放资源时,只要释放s就可以了,因为is、os都是根据s创建的。
  • 分析,这次的代码中,写完输入流没有马上释放资源,而是要写代码接收服务器的反馈。
  • 最后,释放资源。
  • 客户端写完后,现在开始写服务器端。

  • 给反馈就是写数据
  • (在最近的几节课里,意识里没有IO流架构而半懵,视频里写得依然飞快。单纯抄写原代码则更加懵,只好借助抄写音频原文帮助理解。)

---------------------------------------------

package TCPPra1;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.Socket;

public class ClientDemo {

    public static void main(String[] args) throws IOException {

//创建客户端的Socket对象-Socket

        Socket s=new Socket("192.168.43.241",10086);

//获取输出流,写数据

        OutputStream os=s.getOutputStream();

        os.write("hello,TCP.".getBytes());

//接收服务器反馈

        InputStream is=s.getInputStream();

        byte[] bys=new byte[1024];

        int len=is.read(bys);

        String data=new String(bys,0,len);

        System.out.println("CLIENT: "+data);

//释放资源

//        is.close();

//        os.close();

        s.close();

    }

}

//CLIENT: GOT IT.

---------------------------------------------

package TCPPra1;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

public class ServerDemo {

    public static void main(String[] args) throws IOException {

//创建服务器端的Socket对象-ServerSocket

        ServerSocket ss = new ServerSocket(10086);

//监听客户端连接,返回一个Socket对象

        Socket s = ss.accept();

//获取输入流,读数据,并把数据显示在控制台

        InputStream is = s.getInputStream();

        byte[] bys = new byte[1024];

        int len = is.read(bys);

        String data = new String(bys, 0, len);

        System.out.println("DATA is: " + data);

//给出反馈

        OutputStream os = s.getOutputStream();

        os.write("GOT IT.".getBytes());

//释放资源

//        s.close();

        ss.close();

    }

}

//DATA is: hello,TCP.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值