网络编程_基于TCP的Socket编程_基本步骤

TCP是面向连接的,安全可靠的,相比UDP性能低一些。它底层和UDP不一样,UDP使用的是数据包进行传输,包里面写目标地址,TCP是使用IO流做操作。
大家上网的时候在浏览器输入URL,URL请求服务器的资源,服务器根据你的请求做出响应的反应,我们将这种方式称为request(请求)–response(响应)。http协议的底层使用的就是TCP,TCP是http的传输层的协议,这个TCP显然也是请求响-应式的。
既然是请求-响应,那首先要有一台服务器(Server),另一端叫做client(客户端),TCP不像UDP,UDP两端是平等的,它是不平等的。
必须在server上打开一个端口【监听】(这个监听是阻塞式的)客户端的连接,等待客户端的连接,一旦客户端连接了之后,我们就将其称为一个Socket,服务器上就有一个serverSocket。只要建立完了连接之后,底层使用的就是IO流了。
在这里插入图片描述
TCP编程的操作步骤(通信原理):
在这里插入图片描述
可以使用TCP做很多事情,比如说我们做交互、登录还可以做在线聊天室,还可以手写服务器,这些都会不断涉及,目前先掌握Socket编程的套路,先把套路学会了。
在这里插入图片描述

package com.sxt.tcp;

import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 熟悉流程
 * 创建服务器
 * 1、指定端口 使用ServerSocket创建服务器
 * 2、阻塞式等待连接 accept
 * 3、操作: 输入输出流操作
 * 4、释放资源 
 * @author 
 *
 */
public class Server {

	public static void main(String[] args) throws IOException {
		System.out.println("-----Server-----");
		// 1、指定端口 使用ServerSocket创建服务器
		ServerSocket server =new ServerSocket(8888);
		// 2、阻塞式等待连接 accept
		Socket  client =server.accept(); 
		System.out.println("一个客户端建立了连接");
		// 3、操作: 输入输出流操作
		DataInputStream dis =new DataInputStream(client.getInputStream());
		String data =dis.readUTF();
		System.out.println(data);
		// 4、释放资源 
		dis.close();
		client.close();
		server.close();
	}
}



package com.sxt.tcp;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * 熟悉流程
 * 创建客户端
 * 1、建立连接: 使用Socket创建客户端 +服务的地址和端口
 * 2、操作: 输入输出流操作
 * 3、释放资源 
 * @author 
 *
 */
public class Client {

	public static void main(String[] args) throws UnknownHostException, IOException {
		System.out.println("-----Client-----");
		//1、建立连接: 使用Socket创建客户端 +服务的地址和端口
		Socket client =new Socket("localhost",8888);
		//2、操作: 输入输出流操作
		DataOutputStream dos =new DataOutputStream(client.getOutputStream());
		String data ="hello";
		dos.writeUTF(data);
		dos.flush();
		//3、释放资源 
		dos.close();
		client.close();
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值