NO.34 TCP实例

作者: smallnumber | 来源:发表于2017-08-04 22:39 被阅读0次

    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)客户端用户输入等待时不能耽误服务端返回信息,因此要多线程实现不输入也能同时接收信息。

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

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


    客户端具体代码如下:

    定义属性、构造方法初始化数据 内部类实现Runnable为线程的任务 客户端启动的方法 main方法实现

    服务端具体代码如下:

    定义属性、构造方法初始化数据

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

    服务端启动的方法 内部类实现Runnable为线程的任务1 内部类实现Runnable为线程的任务2(该代码后面有socket.close()未截出) main方法实现

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

    客户端交互界面口 服务器交互界面

    相关文章

      网友评论

        本文标题:NO.34 TCP实例

        本文链接:https://www.haomeiwen.com/subject/yfbblxtx.html