使用TCP来进行数据通信

上次我们讲到了UDP的通信,今次我们来聊聊TCP通信

1.TCP比较安全,因为他有确认-反馈-再确认的三次握手机制

2.具体实现

//客户端

public class Client{

  public static void main(String[]args){

      //首先还是先创建一个发送器

      Socket client =new Socket();

      //TCP和UDP不同,TCP传输是凭借流来传的,所以要创建流对象,又由于是向外发送,所以是Output流.又需要将发送器和流连接上,故有了下面这句话

      OutputStream os=client.getOutputStream("localhost",7711);

      //将想要写的话通过流写出去

      byte[]buf="内容".getBytes();

      os.write(buf);

      //随手关门,从近到远

      os.close();

      client.close();

    }

}

//接收端,老规矩不能写在一个包里

public class Server{

  public static void main(String[]args){

    //接收端创建的对象于发送端不同,区别于UDP,但是要写端口这一点是一样的

    ServerSocket server=new ServerSocket(7711);

    //创建一个监视器,怎么样才能和发送器扯上关系呢

    Socket client=server.accept();

    //发送端是output,你接收就得是input了,得建立一个和监视器有关,而且可以监视流的动向的一个对象

    InputStream is=client.getInputStream();

    //流来了用什么接呢,还是得建立一个数组啊

    byte[]buf=new byte[1024];

    //读到了,也装起来了

    int length=is.read(buf);

    //系统说他收到了,真的吗?亮出来吧

    String str=new String(buf,0,length);

    System.out.println(str);

    //出结果了.异常自己处理一下.服务器一般是不关的,但是我们只用一次,就这样吧

  }   

}

2.又回到了老问题,我想多次使用咋办,把功能体写到   while中即可实现

3.那多线程又如何解决?

其实和之前差不多,实现Runnable方法,找代理,或者继承Thread类

抓住不变的东西即可

原文地址:https://www.cnblogs.com/waibangma/p/11144247.html