基于TCP/UDP的socket通讯
一、socekt是什么?
Socket是什么?(两个港口之间通过船来传输货物,而船是协议。socket就是港口)
1、是为网络服务提供的一种机制
2、通讯的两端都有Socket
3、网络通信其实就是Socket间的通信
4、数据在两个socket间通过IO传输
二、但是都知道,港口有了,但是船的类型可不一样,有的是民用、有的是军用。各有各的!所以我们经常用的是TCP协议和UDP协议,如果TCP是军用,那么UDP就是民用,从字面意思就可以明白,TCP更可靠!那么两者的区别是什么?
UDP讲解:
1、将数据及园和目的封装成数据包中,不需要建立连接(就像寄邮件一样,并不会去操心收件人是否能一定收到)!
2、每个数据报的大小限制在64K内,(加入你有2M数据,那你只能分为多个包去发)
3、因无连接,是不可靠连接(数据容易丢失,例如我们经常下载电影、音乐就是UDP、有时候就容易下载下来不能去观看,就是一部分数据丢失了)
4、不需要建立连接,所以速度快(比如我们聊天,并不知道对方在线不,只是发出去数据就好,至于聊天数据会不会丢,没人会在意,只希望聊天速度快,而不会去纠结特别安全)!
Tcp讲解:
1、建立连接,形成传输的通道(例如打电话,双方有一个人电话挂了,就不能传输数据)
2、在连接进行大数据量的传输
3、通过三次握手完成连接,是可靠协议
4、必须建立连接,效率是稍低,但是很可靠!
举个TCP三次握手的例子:
(而TCP建立连接是通过三次握手,比如张三要给李四打电话,必须保证李四本人亲自接受并确认)
第一步:张三给李四首先拨号
第二步:李四接收到拨打的通知,点击接受通话(如果不接电话,就不可能创建通话)
第三步:双方确认你在吗,并且是否是本人
这三步确认了之后,他们就可以放心的打电话了。
我们先看一下具体如何使用TCP。看下图所示!
一、那么使用TCP,客户端和服务端是如何通讯的呢
二、实现Socket通讯的4大步
三、客户端步骤
四、服务端步骤
五、实例
- 客户端代码
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
/*
* 基于TCP的socket通讯
* 客户端
* */
public class TcpClient {
public static void main(String[] args) {
try {
//1.创建客户端Socket,指定服务器地址和端口
Socket socket=new Socket(