⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unicastconnection.java

📁 kaffe是一个java虚拟机的源代码。里面包含了一些java例程和标准的java包。
💻 JAVA
字号:
/* * Copyright (c) 1996, 1997, 1998, 1999 *      Transvirtual Technologies, Inc.  All rights reserved. * * See the file "license-lesser.terms" for information on usage and  * redistribution of this file. */package kaffe.rmi.server;import java.net.Socket;import java.net.ServerSocket;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.ObjectOutput;import java.io.ObjectInput;import java.io.IOException;import java.rmi.RemoteException;public class UnicastConnection 	implements Runnable, ProtocolConstants {UnicastConnectionManager manager;Socket sock;DataInputStream din;DataOutputStream dout;ObjectInputStream oin;ObjectOutputStream oout;UnicastConnection(UnicastConnectionManager man, Socket sock) {	this.manager = man;	this.sock = sock;}void acceptConnection() throws IOException {//System.out.println("Accepting connection on " + lport);	din = new DataInputStream(sock.getInputStream());	dout = new DataOutputStream(sock.getOutputStream());	int sig = din.readInt();	if (sig != PROTOCOL_HEADER) {		throw new IOException("bad protocol header");	}	short ver = din.readShort();	if (ver != PROTOCOL_VERSION) {		throw new IOException("bad protocol version");	}	int protocol = din.readUnsignedByte();	if (protocol != SINGLE_OP_PROTOCOL) {		// Send an ACK		dout.writeByte(PROTOCOL_ACK);		// Send my hostname and port		dout.writeUTF(manager.serverName);		dout.writeInt(manager.serverPort);		// Read their hostname and port		String rhost = din.readUTF();		int rport = din.readInt();	}	// Okay, ready to roll ...}void makeConnection(int protocol) throws IOException {	dout = new DataOutputStream(sock.getOutputStream());	din = new DataInputStream(sock.getInputStream());	// Send header	dout.writeInt(PROTOCOL_HEADER);	dout.writeShort(PROTOCOL_VERSION);	dout.writeByte(protocol);	dout.flush();	if (protocol != SINGLE_OP_PROTOCOL) {		// Get back ack.		int ack = din.readUnsignedByte();		if (ack != PROTOCOL_ACK) {			throw new RemoteException("Unsupported protocol");		}		// Read in host and port		String dicard_rhost = din.readUTF();		int discard_rport = din.readInt();		// Send them my endpoint		dout.writeUTF(manager.serverName);		dout.writeInt(manager.serverPort);	}	// Okay, ready to roll ...}DataInputStream getDataInputStream() throws IOException {	return (din);}DataOutputStream getDataOutputStream() throws IOException {	return (dout);}ObjectInputStream getObjectInputStream() throws IOException {	if (oin == null) {		oin = new RMIObjectInputStream(din, manager);	}	return (oin);}ObjectOutputStream getObjectOutputStream() throws IOException {	if (oout == null) {		oout = new RMIObjectOutputStream(dout);	}	return (oout);}void disconnect() {	oin = null;	oout = null;	try {		sock.close();	}	catch (IOException _) {	}	din = null;	dout = null;	sock = null;}/** * We run connects on the server. Dispatch it then discard it. */public void run() {	try {		UnicastServer.dispatch(this);		manager.discardConnection(this);	}	catch (Exception e) {		e.printStackTrace();	}}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -