TCP (Transmission Control Protocol 传输控制协议)面向连接的不可靠的数据流服务
UDP (User Datagram Protocl 用户数据报协议)面向无连接的不可靠的数据报服务
TCP传输和UDP不一样TCP传输是流式的必须先建立连接然后数据流沿已连接的线路(虚电路)传输因此TCP的数据流不会像UDP数据报一样每个数据报都要包含目标地址和端口因为每个数据报要单独路由TCP传输则只需要在建立连接时指定目标地址和端口就可以了
如果我不是刚学过砖头似的《计算机网络》(第四版 Andrew STanenbaum着 潘爱民译 清华大学出版社)以上说的我自己都看不懂上面只是简要提一下如果要学习网络这本书还是值得推荐的英文版名字是Computer Networks
形象的讲TCP就像打电话UDP就像发电报
就像发电报宏观上来看UDP是不分客户端和服务端的通信双方是平等的
微观上来讲只相对一个报文发送端是客户端监听端是服务端发送端把数据报发给路由器就像把电报发给了邮局后面的事情就是发送者无法控制也无从知晓的了所以说是不可靠的可能会出现报文丢失而无从知晓就像每张电报都要有收件人一样每个数据报都要有目的地址和端口
就像打电话TCP每次连接都是分客户端和服务端的连接的发起者(相当与拨号打电话的人)是客户端监听者(相当于在电话边等着接电话的人)是服务端发起者指定要连接的服务器地址和端口(相当于拨号)监听者通过和发起者三次握手建立连接(相当于听到电话响去接电话)建立连接后双方可以互相发送和接受数据(打电话)
Java中TCP编程主要通过ServerSocket/Socket 类 实现的其中SocketgetInputStream()/getOutputStream() 是获得输入/输出 数据流的ServerSocketaccept()是用来监听建立连接的