基於jdk序列化的 BIO簡單RPC框架

2021-10-10 13:36:47 字數 2910 閱讀 2353

具體實現步驟:

定義requesthandler類,實現了runnable介面,即乙個連線對應乙個執行緒

定義main方法,建立rpcserver物件和service物件,rpcserver.start()開啟服務

rpc client的實現:

自定義的invocationhandler類:

定義main方法,建立rpcclient物件,呼叫rpcclient.proxy()獲取service**物件,從而可以在像呼叫本地service一樣,通過service.methodname()實現遠端過程呼叫

關鍵**展示:

公共部分

public

class

rpcrequest

implements

serializable

public

inte***ce

helloservice

server部分
public

class

rpcserver

}catch

(ioexception e)

}}

public

class

requesthandler

implements

runnable

public

requesthandler

(object service, socket socket)

public object getservice()

public

void

setservice

(object service)

public socket getsocket()

public

void

setsocket

(socket socket)

@override

public

void

run(

)catch

(nosuchmethodexception

| ioexception | classnotfoundexception | illegalacces***ception | invocationtargetexception e)

finally

catch

(ioexception e)}if

(objectinputstream != null)

catch

(ioexception e)}}

}public object invoke

(object service, rpcrequest request)

throws classnotfoundexception, nosuchmethodexception, invocationtargetexception, illegalacces***ception

// 獲取方法物件

class<

?> clazz = class.

forname

(request.

getclassname()

);method method = clazz.

getmethod

(request.

getmethodname()

, paramstype)

;// 執行方法

object result = method.

invoke

(service, params)

;return result;

}}

public

class

main

}

client部分
public

class

remoteinvocationhandler

implements

invocationhandler

public

remoteinvocationhandler

(string host,

int port)

@override

public object invoke

(object proxy, method method, object[

] args)

throws throwable

public object call

(rpcrequest request)

catch

(unknownhostexception

| classnotfoundexception e)

catch

(ioexception e)

finally

catch

(ioexception e)}if

(objectoutputstream != null)

catch

(ioexception e)}}

return result;

}}

public

class

rpcclient

,new

remoteinvocationhandler

(host, port));

}}

public

class

main

}

物件,物件集合的簡單Xml序列化與反序列化

物件,物件集合的簡單xml序列化與反序列化 本文描述如何使用clr中的 stringwriter,xmlserializer將物件,物件集合 序列化為xml格式的字串,同時描述如何進行 反序列化.c 版本 c 3.0 開發環境 vs 2008 主要方法 複製複製 複製儲存 usingsystem u...

C 的序列化和反序列化

序列化就是把乙個物件儲存到乙個檔案或資料庫欄位中去,而反序列化則是把這個檔案再轉化成原來的物件來使用,他的特點就是儲存為二進位制物件 bin檔案 優點就是容易儲存和取出。我們也可以理解為序列化就是儲存,反序列化就是取出。二進位制的關鍵字 binaryformatter 序列化關鍵字 serializ...

C 的序列化與反序列化

最近看了一下同事寫的 其中包含這麼乙個功能,叫序列化與反序列化。說一下概念,序列化 將資料結構或物件轉換成二進位制串的過程 反序列化 將在序列化過程中所生成的二進位制串轉換成資料結構或者物件的過程 很多情況下,我們需要將資料進行持久化操作,即將資料寫入到檔案中,我們可以通過io操作,或者序列化操作。...