TCP通信

TCP通信

在这里插入图片描述
TCP特点:
是一种面向连接的保证可靠的传输协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。
在这里插入图片描述
TCP通信实现的过程:

  1. 在服务端指定一个端口号来创建ServerSocket,并使用accept方法进行侦听,这样阻塞服务器线程,等待用户请求。
  2. 在客户端指定服务器的主机IP和端口号来创建Socket,并连接到服务端ServerSocket,此时服务端的accept方法将被唤醒,同时返回一个和客户端通信的Socket。
  3. 在客户端和服务端分别使用Socket来获得网络通信的输入/输出流,并按照一定的通信协议对Socket进行读/写操作。
  4. 在通信完成后,在客户端和服务端中分别关闭Socket。

客户端:

package com.ycy3;

import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class Client {
	public static void main(String[] args) throws Exception {
		InetAddress address = InetAddress.getLocalHost();
		String ip = address.getHostAddress();
		int port = 11011;
		// 利用ip 和 port 构建 socket
		Socket socket = new Socket(ip, port);
		// 从socket获取输出流
		OutputStream outputStream = socket.getOutputStream();
		// 写数据
		outputStream.write("你好".getBytes());
		outputStream.flush();
		// 关闭资源
		outputStream.close();
		socket.close();
	}
}

服务端:

package com.ycy3;

import java.io.InputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	public static void main(String[] args) throws Exception {
		int port = 11011;
		// 利用port创建ServerSocket
		ServerSocket serverSocket = new ServerSocket(port);
		// 接收客户端连接
		Socket socket = serverSocket.accept();
		// 从socket获取输入流
		InputStream inputStream = socket.getInputStream();
		// 读取数据
		byte[] b = new byte[1024 * 1];
		int len = inputStream.read(b);
		String message = new String(b, 0, len);
		InetAddress localAddress = socket.getLocalAddress();
		String ip = localAddress.getHostAddress();
		String hostName = localAddress.getHostName();
		System.out.println("客户端名:" + hostName);
		System.out.println("客户端地址:" + ip);
		System.out.println("消息内容:" + message);

		socket.close();
		serverSocket.close();

	}
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值