Socket是网络编程的接口,它抽象成线程之间的接口。两个线程,不管它的操作系统,不管它的硬件,只要有Socket接口,在同一主机中或者在不同的主机中都能通信。我们见到的大大小小的网络程序大多都是通过Socket实现的,比如游戏服务器,ftp服务器,浏览器等。所以理解Socket编程,是网络编程的的必修课。在本篇文章中我们将讲到用Socket实现简单的服务端与客户端互相传送纯文本的例子。
在Socket编程中一端作为服务端,一端作为客户端才能通信。
服务端与客户端的区别:服务端要与它连接的所有客户端通信,而客户端只与指定的一个服务端通信。
在通信前,服务端先指定一个端口,然后就可以等待客户端的连接。
客户端要想连接上服务端,必须知道服务端的ip地址和端口,ip地址指明了服务端的位置,而端口指明了是哪一个服务端。
当客户端与服务端连接上之后,如何通信呢。在服务端,要想给客户端传输数据,就先得到客户端的实例,然后对该实例进行IO操作,就相当与操作自己的文件系统一样,非常的方便,所以说Socket是抽象的概念,把数据传输抽象成数据的读写。当服务端对客户端的实例进行写的操作时客户端就可以收到服务端写的数据;当客户端对服务端的实例进行写的操作时,服务端就能收到客户端传输过来的数据;
在Java中服务端中:
ServerSocket(int port)构造函数绑定一个端口。
Socket accept()