是否可以使用java检查客户端发送到服务器的内容
我正在编写一个基于客户机-服务器的java程序。我有两个问题,我希望有人能回答。 第一个问题是,有没有办法检查客户端发送给服务器的内容? 第二个问题是,是否有代码允许服务器检查他们从客户端收到的文件?我一直无法在网上找到这个问题的答案 这是我的服务器代码是否可以使用java检查客户端发送到服务器的内容,java,Java,我正在编写一个基于客户机-服务器的java程序。我有两个问题,我希望有人能回答。 第一个问题是,有没有办法检查客户端发送给服务器的内容? 第二个问题是,是否有代码允许服务器检查他们从客户端收到的文件?我一直无法在网上找到这个问题的答案 这是我的服务器代码 package servers; import java.io.*; import java.net.*; public class Servers { public static void main(String [] args)thr
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万倍。不要只寻找代码示例;了解如何解释文档并将其转换为代码。你需要了解你在看什么,如果你不了解,就自己获取你需要的知识。