多功能套接字java,套接字vs NIO套接字

时间:2017-11-19 20:36:31

标签: java sockets

随身携带,我是套接字编程的新手。

关于制作与Teamviewer类似的程序。我可以创建一个多线程的简单服务器/客户端应用程序。但问题是我无法弄清楚如何做以下事情: 让我们说我有服务器和客户端连接到服务器。 我可以将文件从客户端传输到服务器。我可以和客户进行简单的聊天。但我的问题是:如何在文件同时传输的同时与客户端聊天?我的意思是我不能在一段时间内创建多个函数。因为我们只有一个输入和一个输出服务器和客户端。那么我怎么能向客户端发送更多的那个功能呢?客户端怎么能一次读取多个功能并响应请求呢? 我做了类似的事情:我向客户端发送了一个请求,我在一个包含新DataInputStream的新线程中得到了响应,但我无法弄清楚主DataInputStream将如何从客户端接收新的响应,因为接收的是什么这种方式的请求是新的DataInputStream。我在这种情况下真的迷失了,因为我觉得我的概念是完全错误的,但我无法找到正确的概念去做那样的事情。 是否可以使用ServerSocket或者我应该看看NIO Socket?

注意: 我不想要一段代码,我想了解整个操作的概念。谢谢

1 个答案:

答案 0 :(得分:1)

在单个连接上使用基于数据包的按摩系统

发送

{"type":"chat", "message":"hi"}
{"type":"xfer", "fileName":"fileX", "data":"some_binary_data"}

接收

switch(getString("type")){

    case "chat":
        System.out.println("User said" + getString("message"));
        break;

    case "xfer":
        File f = new File(getString("fileName"));
        f.write(getString("data"));
        break;

    ...
}

显然,如果二进制文件相当大,你应该把它分成许多不同的消息并在另一边重新组装,这样就可以让聊天消息在传输过程中继续进行。< / p>