代码拉取完成,页面将自动刷新
src
源代码lib
依赖库jdk11环境下vscode中使用Java Extension
com.rftx.auth
提供了在建立连接时的身份验证接口和默认的token验证方式com.rftx.conn
工作过程中的控制连接、传输连接线程com.rftx.core
RFTX工作中的服务端和客户端com.rftx.exception
异常类com.rftx.listener
工作时的事件监听器接口,由上层实现com.rftx.util
工具类com.rftx.test
测试类com.rftx.core.RFTXHost
定义了一个RFTX主机,无论调用者是服务端、客户端或者同时作为服务端和客户端,RFTXHost对象都是必须的;RFTXHost保存了由RFTXServer
接受或RFTXClient
创建 的所有控制连接
和传输连接
com.rftx.core.RFTXServer
定义了一个RFTX服务端程序,此对象被包含在RFTXHost对象中,由指定方法创建;RFTXServer是一个线程,启动后以堵塞的方式接受连接,并将连接储存到RFTXHost的连接链表中com.rftx.core.RFTXClient
定义了一个RFTX客户端程序,此对象被包含在RFTXHost中,由指定方法创建;RFTXClient包含一个connect(String addr,int port)
方法,用于连接指定地址的指定端口上被启动的RFTXServer程序一个RFTXHost包含一个RFTXServer对象和一个RFTXClient对象
使用特定的方法以初始化这两个对象
RFTXHost包含三个连接链表
,分别储存控制连接
、传输连接
和未识别的连接
在一个RFTXHost对象中,无论一个连接是由RFTXClient创建的或者是由RFTXServer接受的,都将被存到对应链表中
这意味着,同一个RFTXHost中的RFTXServer和RFTXClient管理的连接将被共享
控制连接
客户端主动连接服务端后两端各创建一个控制连接来发送收发文件的指令传输连接
每个传输任务对应一个传输连接,用于收发文件,将被底层自动创建未识别的连接
服务端接受一个连接时暂时默认其为未识别的连接,之后(由客户端发起的)该连接会发送一个识别码以告知服务端此连接的身份通常情况下,一个程序内只需要创建一个RFTXHost对象
RFTXHost host=new RFTXHost("hostName");//创建一个hostname命名的RFTXHost
hostname
将用于与对端建立连接时识别互相的身份,不同于token,hostname将不会被校验,仅作为身份识别RFTXHost
对象的initServer(int port)
方法或者initClient()
方法来初始化RFTXHost
对象内的RFTXServer
对象或者RFTXClient
对象NullPointerException
RFTXHost
对象中可以只创建RFTXServer
或只创建RFTXClient
对象亦或是同时创建两个对象假定已经定义host:RFTXHost对象(且这确是必须的)
host.initServer(3000);//在此主机上开放3000端口作为RFTXServer的服务端口,确保此主机的指定端口可被外部访问
host.getAuthenticator.addValidToken("tester","TestToken");//添加名为tester,值为TestToken的合法token
host.server.start();//使用此方法以启动RFTXServer的监听器
RFTXHost
仅包含一个RFTXServer
对象,重复调用initServer(int port)
会覆盖已创建的RFTXServer
导致未预料的异常,尤其是当server已经开始监听假定已经定义host:RFTXHost对象(且这确是必须的)
host.initClient();//初始化Host对象中的Client对象
host.getAuthenticator().setConnToken("TestToken");//设置client连接时使用的token为"TestToken"
host.client.connect("testserver.ts",3000);//使用Client对象连接testserver.ts的3000端口
connect()
方法外,前两行都是持续性的修改host
对象内的属性,在设置连接token之后,每次连接都将使用最新设置的tokenhost
对象内client
对象的方法host.post(String peerName,String taskToken,String localFile,String remoteFile);
peerName
提供对端hostName以确定目标taskToken
此发送任务的tokenlocalFile
本地文件,要被发送的文件remoteFile
对端储存文件的路径及文件名e.g.
host.post("testServer","taskToken000","product/jar/rftx.jar","receive/rftx-lib.jar")
host.get(String peerName,String taskToken,String localFile,String remoteFile);
peerName
提供对端hostName以确定来源主机taskToken
此获取任务的tokenlocalFile
获取文件的储存文件,位于本地remoteFile
对端文件的路径和文件名e.g.
host.get("testServer","taskToken000","product/jar/rftx.jar","receive/rftx-lib.jar")
*注意:两个方法中,本地文件、远程文件的顺序是相同的,请区分好来源文件及目标文件
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型