Oni zlbg[N@\

hLg̖ڎ

Oni ł̓zXgԂ̒ʐM TCP/IP Ȃǂ鰹ロ越lbg[Np邱Ƃ”\łB zlbg[Np邱ƂŁA܂܂ȃvgȐɃlbg[NzƂłB

1. Oni zlbg[NƂ

Oni zlbg[N͈ȉ̂悤ȍ\ɂȂĂB

Oni zlbg[N\
}: Oni zlbg[N\

Connectionw̓Xg[^̃zXgԒʐMsATCP/IPASSLȂ ̃vgR鰹ロ隠 C^tF[X oni.net.tunnel.Connection ノて蛋トConnectionフ受け付sC^tF[X oni.net.tunnel.ConnectionServerノて蛋ト ConnectionConnectionServerTCP/IPナのソPbg T[o\Pbgノ対家考トよいB
Oni ナはデtHg Connectionyム、ConnectionServer フ屡TCP/IP gpTCPConnectionyTCPConnectionServerĂB

Tunnelw͐ڑꂽzXgԂ̃f[^ʐMHA f[^ʐM̓pPbg(oni.net.tunnel.Packet)PʂōsB Tunnel̎ς邱ƂɂāAf[^̈Í∳kAʃ\[X ɂf[^ʐM (Ⴆ UDP/IP ɂʐM) sƂłB
Onił̓zXgԂɐڑꂽ Connection f[^̒ʐMHƂĎg PlainTunnel ƁA UDP/IPf[^̒ʐMHƂĎg UDPTunnelĂB

Lanew Tunnel pĕ̉zIȒʐMHB zXgɑ΂ Lane ƂA‚ Tunnel LĒʐMsB

ConnectionyTunnel͊g”\Ȃ߁AOni zlbg[N͂܂܂ȃlbg[N‹Ŏgp邱Ƃ”\ƂȂĂB


2. Oni zlbg[NC^tF[X

(1) LaneAddress

zlbg[N̐ڑ̑w LaneAddress pB LaneAddress ł InetPointAʖňӂɎw肷B

oni.net.InetPoint Lane ڑۂ̑vOŵłAvgRAzXgA|[gԍ琬B vgR͐ڑɎgpConnectioñ^Cvw肷̂łAύX邱Ƃɂ ʐMɎgp鉺ʃvgRw肷邱ƂłB InetPointŎg|[gԍLaneManager getInetPointPort() \bhoƂłB

ʖ̓VXeňӂłΔCӂ̕ェ用ナン、ノ緬関ヘな LaneManager open \bhナ登^ LaneAcceptor フ晒X foo.bar.BuzzLaneAcceptor ナば、"foo.bar.BuzzLaneAcceptor" フようノとよいB

(2) メけと接/h4>

ロに接滝合 Lane pB 閧ゥフ接濯け付鼾kLaneManager pメけ LaneManager t Lane 邱ƂłB

(3) f[^̑M

f[^̑M͑o Lane ̃\bhĂяoƂōsB send \bhőMA receive \bhŎMB

܂AsetTunnelType p邱ƂɂāAf[^̑MTunnel̃^Cvw肷邱ƂłB w肷Ƃ́Ap^CṽNX̃CX^XZbgB ftHgłPlainTunnelTypepB ftHgTunnel̃^CvƂĈȉ̂̂pӂĂB

Lane ̃f[^̂ЂƂ‚ɂ܂Ƃ܂߂邱Ƃ”\łB Lane ɓ LaneDataQueue Zbg΁A LaneDataQueue 邾 炷ׂĂ Lane Ŏ薰ッ付f[^ナ

(4) Oni zlbg[NvO~Oフ/h4>

LaneManager ɂ҂̗B

import oni.net.*;
import java.util.ArrayList;

class LaneList implements LaneAcceptor {
    ArrayList list = new ArrayList();

    public void laneAccepted(Lane lane) {
        System.out.println("Lane accpeted.");
        list.add(lane);
    }
}

public class LaneAcceptSample {
    ...
    public static void main(String[] args) throws NetException {
        LaneManager laneManager = LaneManager.getDefaultLaneManager();
        LaneList laneList = new LaneList();
        LaneManager.open("LaneList", laneList);  // ʖ"LaneList"LanetJn
        ...
    }
    ...
}
...

Lane ŐڑAMB

...
LaneAddress address = new LaneAddress(inetpoint, name);
Lane lane = new Lane(address);
lane.open();
try {
    ...
    lane.send(data);
    ...
} finally {
    lane.close();
}

3. zlbg[ÑJX^}CY

Oni zlbg[ÑJX^}CY LaneManagerƂ JX^}CYꂽ oni.net.NetProperty w肷邱ƂōsB ȉ̂ƂNetPropertyōsB

(1) vpeB̐ݒɂ‚

ConnectionTunnelƂ̊evpeBNetPropertygĐݒ肷邱ƂłB
l̐ݒA擾̂߂̃\bh͈ȉ̒ʂłB Oni ŃftHgŗpӂĂTunnelConnection̐ݒ”\ȃvpeB ꗗ́AB

(1) Creatorɂ‚

CreatorC^tF[X́A NetPropertygponi.net̊et@NgNX邽߂̃C^tF[XłB

(2) ConnectionFactoryCreator̒lj

ConnectionFactory Connection邽߂ t@NgC^tF[XłB lj邱ƂɂA zXgւ̐ڑɎgpConnectioñ^Cv₷ƂłB

(3) ConnectionServerFactoryCreator̐ݒ

ConnectionServerFactory ConnectionServer邽߂ t@NgC^tF[XłB ݒ肷邱ƂɂALaneManagerŎgp ConnectionServerύX邱ƂłB

(4) TunnelFactoryCreator̒lj

TunnelFactory Tunnel邽߂ t@NgC^tF[XłB lj邱Ƃɂ LaneŎgpA Tunnel̃^Cvlj邱ƂłB

(5) InetPoint̃vgR̕ʖ̐ݒ

InetPoint̃vgRɂ́AꂼConnectioñ^Cv\ConnectionTypeNX TuNXg邪Â܂܃NXw肷ƒ̂ŕʖݒ肷邱ƂłB Ⴆ΁ATCPConnectioñ^Cv\NX oni.net.type.TCPConnectionType ł邪A InetPointł̃RXgN^w肷ƖOȂĂ܂B ŁANetProperty#setConnectionTypeAlias\bhgp邱ƂɂAݒ肵ʖ InetPoint邱ƂłB
// ʖ̐ݒO
net InetPoint("oni.net.type.TCPConnectionType://localhost:8684);
	
// ʖ̐ݒ
setConnectionTypeAlias("tcp", new oni.net.type.TCPConnectionType());

// ʖ̐ݒ
new InetPoint("tcp://localhost:8684");

Copyright © 2001-2002 CyberStep, Inc. All Rights Reserved.

Oni \tgEFA