Java中Socket通信

Java中简单的Socket通信前段时间学过,昨天发现还是没有完全的掌握,于是决定写一篇博客进行总结。不过这次跟以往不同,我不会在博客中加入代码,只会做一些思路上的总结,因为代码是永远记不完的,只有记住了思路才会记住它的实现。

端口


端口是用来区分不同应用程序的,每个应用程序都会绑定一个端口。
端口的范围是0~65535,其中0~1023为系统所保留,MySQL绑定的是3306,Http绑定的是80.ftp:21,talnet:23.
IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的终结点,是TCP和UDP的基础。


Java中的网络支持



InetAddress:用于标识网络上硬件资源
URL:统一资源定位符,由两部分组成:协议名和资源名,中间用:隔开,通过URL可以直接读取和写入网络上的数据。
Sockets:使用TCP协议实现网络通信的Socket有关的类
Datagram:使用UDP协议,将数据保存在数据报中,用于网络通信。

TCP协议与Socket



TCP协议是面向连接的、可靠的、有序的、以字节流的方式发送数据。
Socket基于TCP协议实现网络通信
客户端的Socket类
服务器端的ServerSocket类


Socket通信实现步骤



1.创建服务器端的ServerSocket对象和客户端的Socket对象。
2.打开连接到Socket的输入/输出流
3.按照协议对输入/输出流进行操作
4.关闭输入/输出流,关闭socket


多线程服务器基本实现步骤



1.服务器端创建ServerSocket对象,循环调用accept()方法等待客户端连接。
2.客户端创建Socket对象,请求和服务器进行连接。
3.服务器端创建Socket对象与请求连接的客户端进行专线连接
4.建立连接的Socket对象在一个单独的线程上进行会话。
5.服务器循环调用accept()方法等待客户端连接。


基于UDP的Socket编程



UDP协议(用户数据协议)是无连接、不可靠的、无序的。
UDP协议以数据报作为传输的载体

UDP编程:
进行数据传输时,需要将数据定义成数据报(Datagram)
在数据报中指明数据所要到达的Socket(主机地址和端口号),然后再将数据报发送出去。

相关操作的类:
DatagramPacket:表示数据报包,
DatagramSocket:进行端到端通信的类

服务端实现步骤:
1.创建DatagramSocket,指定端口号
2.创建DatagramPocket
3.接受客户端发送的数据
4.读取数据

客户端实现步骤:
1.定义发送信息
2.创建DatagramPocket,包含要发送的信息
3.创建DataSocket
4.发送数据.