NO.34 TCP实例

TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

今天利用java的封装了TCP协议的类 ---- java.net.Socket;  java.net.ServerSocket;使用它们可以与远端计算机通讯。

实现聊天室的案例的要点:

1)客户端实例化Socket时需要传入两个参数:服务端计算机的地址信息(IP地址);服务端计算机上运行的服务端应用程序申请的服务端口;

通过IP可以找到服务端的计算机,通过端口可以连接到运行在服务端计算机上的服务端应用程序。

实例化Socket的过程就是连接服务端的过程,若服务端无响应,实例化过程会抛出异常。

端口号是一个整数,2字节内的整数0-65535,但3000以内的端口号不要使用,因为紧密的绑定着系统程序,和世界上流行的应用程序。10000以上也很少被使用。

2)运行在服务端的ServerSocket主要负责两个工作:

向系统申请服务端口,客户端就是通过这个端口与服务端应用程序建立连接的。

监听服务端口,一旦客户端通过该端口尝试连接时,ServerSocket就会实例化一个Socket与该客户端通讯。

3)客户端用户输入等待时不能耽误服务端返回信息,因此要多线程实现不输入也能同时接收信息。

服务端要能够接收多个客服端,因此要多线程与读取信息分开。

由于服务端要返回对每个客户端返回不同线程输出流的信息,需将不同线程中的输出流装入集合,并遍历信息返回客户端,并在客户端离线时清除该输出流


客户端具体代码如下:

NO.34 TCP实例_第1张图片
定义属性、构造方法初始化数据
NO.34 TCP实例_第2张图片
内部类实现Runnable为线程的任务
NO.34 TCP实例_第3张图片
客户端启动的方法
NO.34 TCP实例_第4张图片
main方法实现

服务端具体代码如下:

NO.34 TCP实例_第5张图片
定义属性、构造方法初始化数据

内部类实现Runnable为线程的任务


NO.34 TCP实例_第6张图片
服务端启动的方法
NO.34 TCP实例_第7张图片
内部类实现Runnable为线程的任务1
NO.34 TCP实例_第8张图片
内部类实现Runnable为线程的任务2(该代码后面有socket.close()未截出)
NO.34 TCP实例_第9张图片
main方法实现

最后效果为(自己客户端连自己服务端):

NO.34 TCP实例_第10张图片
客户端交互界面口
服务器交互界面

你可能感兴趣的:(NO.34 TCP实例)