TCP协议实现简单的通信

TCP协议实现简单的通信

## TCP协议:

       是一种面向连接的保证可靠的传输协议,通过TCP协议传输,得到的是一个顺序的无差错的数据流。
  发送方和接收方的成对的建立连接。必须通了之后才能传输数据。可以双向传输数据

*端口:

**        我们这里所说的端口,不是计算机硬件的I/O端口,而是软件形式上的概念。
          根据提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。
          计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,
          也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,
          这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。 

*第一步:**创建客户端方:Client.java

   import java.io.File;
   import java.io.FileOutputStream;
   import java.io.IOException;
   import java.io.InputStream;
   import java.io.OutputStream;
   import java.net.InetAddress;
   import java.net.Socket;

    /**
   * TCP 通信 客户端发送消息
     *
    */

  public class Client {

public static void main(String[] args) throws IOException {
	Cilent demo = new Cilent();
	demo.test();
}

private void test() throws IOException {
   // 获取本机地址,用作发消息的对象。
	InetAddress address = InetAddress.getLocalHost();
	String ip = address.getHostAddress();
   //自定义端口,用于发送消息
	int port = 10086;
	Socket socket = new Socket(ip, port);
	OutputStream outputStream = socket.getOutputStream();
	String s = "A:小梅,你最近还好吗?";
	outputStream.write(s.getBytes());
	System.out.println("-------------------");
	InputStream inputStream = socket.getInputStream();
	//创建输出流,将服务器传送回来的消息保存到硬盘
	FileOutputStream fileOutputStream = new FileOutputStream("D:" + File.separator + "tcp.txt", true);
	byte[] b = new byte[1024 * 1];
	int len = inputStream.read(b);
	fileOutputStream.write(b, 0, len);
	fileOutputStream.flush();
	String message = new String(b, 0, len);
	System.out.println("收到回信:" + message);
	inputStream.close();
	fileOutputStream.close();
	outputStream.close();
	socket.close();
      }
 }

*第二步:**创建服务器方:Server.java

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;

 /**
 * TCP 通信 服务器端,接收消息
 *
  */
public class Server {

 	public static void main(String[] args) throws IOException {
     	  Server demo=new Server();
	      demo.test();

  }
   private void test() throws IOException {
      int port = 10086;
	  ServerSocket serverSocket = new ServerSocket(port);
	  Socket accept = serverSocket.accept();
	  InputStream inputStream = accept.getInputStream();
	  //创建输出流,将收到的信息保存到硬盘中
	  FileOutputStream fileOutputStream = new FileOutputStream("D:" + File.separator + "tcp.txt",true);
	  byte[] b = new byte[1024 * 1];
	  int len = 0;
	  len = inputStream.read(b);
	  fileOutputStream.write(b, 0, len);
	  fileOutputStream.flush();
	  String s = new String(b, 0, len);
	  System.out.println("收到消息:" +s);
	  String ip = accept.getInetAddress().getHostAddress();
	  System.out.println("消息来自:" + ip);
	  OutputStream outputStream = accept.getOutputStream();
	  outputStream.write("B:我很好,你呢?".getBytes());
	  outputStream.close();
	  inputStream.close();
	  serverSocket.close();
	  fileOutputStream.close();
    }
 }

运行结果:
在这里插入图片描述
在服务器端,接收到客户端发送过来的信息。
在这里插入图片描述
在客户端收到服务器发送回来消息

在这里插入图片描述
将消息读写到硬盘中
注意:TCP也是先运行服务器端 Server,再运行客户端 Client.防止消息传送过来时,没有对象接收。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值