Java 中的点对点电子表格应用程序



我有一个大学项目,我需要扩展现有的电子表格应用程序(CleanSheets - 开源)。

现在,它只是一个简单的电子表格应用程序。我被要求实现的是一个菜单选项,允许用户共享工作表(即用户选择"共享工作表" - 它是当前工作表 - 然后选择他们希望共享的区域:例如A1:A9)。然后,他们可以指定本地端口并创建共享。

希望连接到该共享的其他用户必须知道计算机的 IP 和要连接的端口。一旦他们在名为"加入共享工作表"的菜单选项下输入该信息,则该共享区域将出现在他们当前的工作表中,他们可以自由编辑和查看其他人在这些单元格中键入的内容。

每个人都有读/写访问权限 - 必须由线程控制(因为我们可以有 1 个人共享和 3 个对等方连接到该工作表,所有人都查看更改并做出自己的更改)。必须保证多重排除(这可以通过信号量和/或重入锁来完成)。

共享实现必须在对等体系结构中实现。

现在我的问题是:如何开始使用 Java 中的套接字进行开发?我已经阅读了一些Java文档,特别是关于JXTA的文档,但这很可能不是我需要的。我不需要复杂的P2P应用程序,只需要共享功能。

我假设我需要使用 UDP(因为 TCP 主要是服务器-客户端,这里的任何人都可以是服务器或客户端),我不需要数据包控制。我已经知道 C 中的套接字。我应该在 Java 中使用哪些与套接字相关的类?

java.io 和 java.net 有一些你可能想要查看的有用类。这是一个非常简单的例子,因为我忽略了接球/投掷,但希望它能展示你可以为 tx/rx 做什么。

写入字节应该能够接收可序列化的东西。

发送数据:

// create connection
Socket cs = new Socket(<dest-hostname>, <port-num>);
DataOutputStream ds = new DataOutputStream(cs.getOutputStream() );
// send stuff
ds.writeBytes("is this thing on?");
// close socket and stream
cs.close();
cs = null;
ds = null;
Receive data:
ServerSocket listenSocket;
Socket s = listenSocket.accept();
BufferedReader receivedThing = new BufferedReader( new InputStreamReader( s.getInputStream() ) );
//assuming its plaintext
String msg = receivedThing.readLine();
// close the socker/serversocket

希望这有帮助。

相关内容

最新更新