Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用java检查客户端发送到服务器的内容_Java - Fatal编程技术网

是否可以使用java检查客户端发送到服务器的内容

是否可以使用java检查客户端发送到服务器的内容,java,Java,我正在编写一个基于客户机-服务器的java程序。我有两个问题,我希望有人能回答。 第一个问题是,有没有办法检查客户端发送给服务器的内容? 第二个问题是,是否有代码允许服务器检查他们从客户端收到的文件?我一直无法在网上找到这个问题的答案 这是我的服务器代码 package servers; import java.io.*; import java.net.*; public class Servers { public static void main(String [] args)thr

我正在编写一个基于客户机-服务器的java程序。我有两个问题,我希望有人能回答。 第一个问题是,有没有办法检查客户端发送给服务器的内容? 第二个问题是,是否有代码允许服务器检查他们从客户端收到的文件?我一直无法在网上找到这个问题的答案

这是我的服务器代码

package servers;

import java.io.*;
import java.net.*;

public class Servers {

public static void main(String [] args)throws Exception
{
    try 
    {
        // server variable
        ServerSocket server=new ServerSocket(9999);
        Socket client=server.accept();


        BufferedReader fromClient=new BufferedReader(new InputStreamReader(client.getInputStream()));
        String temp=fromClient.readLine();
        System.out.println(temp);
        System.out.println("Recieved files");
        server.close();


   while ((temp = fromClient.readLine()) != null) 
    {
        System.out.println(temp);
    }

    }
    catch (Exception ex)
      {
      }
}
}
这是我的客户代码

package client;

import java.io.*;
import java.net.*;

public class Client{

public static void main(String [] args)throws Exception
{   
    try 
    {
       File file=new File("C:\\Users\\User\\Desktop\\College 2013\\FYP\\Attribute Data\\Alex.txt"); 
    BufferedReader br=new BufferedReader(new FileReader(file));

    String line;
    while ((line = br.readLine()) != null) 
    {
        System.out.println(line);
    }


    Socket socket=new Socket("Localhost", 9999);
    PrintWriter toServer=new PrintWriter(socket.getOutputStream(),true);
    BufferedReader fromServer=new BufferedReader(new InputStreamReader(socket.getInputStream()));
    String toSend,rec="";

       if(!file.exists())
{
    System.out.println("File not found terminating program.");

} 

br.close();
toServer.println("this is the end");
System.out.println("Finished sending file.");
System.out.println("Begining to receive Server output.");


 while (!(rec = fromServer.readLine()).equals("this is the end"))
{
    System.out.println(rec);
}

toServer.close();
br.close();
socket.close();

return;
} 
catch (Exception e) 
    {

    } 
    }
}

如果您有任何建议,请使用
tcpdump
wireshark
等程序来观察来回的网络流量。我通常从命令行使用
tcpdump
;然而,
wireshark
有一个GUI,也许有些人更喜欢它


我认为最好使用一个单独的程序来观察交通情况。这样你就不必用额外的东西使你的程序复杂化,而且外部程序也可以应用于任何产生网络流量的东西。

你也可以设置一个拦截代理,例如tcptrace,它工作得很好,非常小,仅适用于Windows

两边都使用一个Java API(它有一个Java API,所以不要使用外部程序)。客户端发送文件,然后发送sha1sum。服务器接收文件,计算sha1sum,然后仅在文件上计算sha1sum本身。如果总数相符,一切都好。如果不匹配,则从客户端传输的sha1sum或文件数据本身不匹配,并且在任何情况下,您都需要重新运行传输,因为出现了问题。通常,如果您是通过TCP执行此操作,则不会出现随机数据损坏,但收到的文件可能会被截断。感谢您的回复。我希望你能再次帮助我,我从未使用过sha1sum,你如何实现它?这应该在stackoverflow上。如果你知道它在哪里,你能在stack overflow上给我发送它的路径吗?我找不到它。你需要学会自给自足。不要让我(或任何人)用勺子喂你。使用搜索引擎。谷歌“sha1 java api”。阅读JavaDocs。能够帮助自己独立解决问题并以自我指导的方式学习,将比我教你如何使用Java SHA1 API提高你的职业和学术成就10万倍。不要只寻找代码示例;了解如何解释文档并将其转换为代码。你需要了解你在看什么,如果你不了解,就自己获取你需要的知识。