0

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

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

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

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

共享实现必须在对等架构中实现。

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

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

4

1 回答 1

1

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

希望这可以帮助。

于 2012-06-27T15:37:00.167 回答