我在用Windows 10。
我在Java上有一个服务器程序:
import java.io.*;
import java.net.*;
public class TCPServer {
public static final int TCP_SERVER_PORT = 6789; //mer eller mindre tilfeldig valg portnr.
public static void main(String args[]) throws Exception
{
String setningFraKlient;
String oversattSetning;
//Lytter på port TCP_SERVER_PORT:
System.out.println("Lytter paa TCP-port " + String.valueOf(TCP_SERVER_PORT) + " ...");
ServerSocket welcomeSocket = new ServerSocket(TCP_SERVER_PORT);
while(true) {
//Tjeneren venter, 'henger' på accept(), på at klienten skal ta kontakt:
Socket connectionSocket = welcomeSocket.accept();
//Fortsetter, skriver ut IP-adressen til klienten:
System.out.println("Kontakt med: " + connectionSocket.getRemoteSocketAddress().toString());
//Kopler connectionsocket til InputStream:
InputStreamReader isr = new InputStreamReader(connectionSocket.getInputStream());
BufferedReader fraKlient = new BufferedReader(isr);
//Kopler OutputStream til connectionsocket:
DataOutputStream tilKlient = new DataOutputStream(connectionSocket.getOutputStream());
//Leser data fra klienten:
setningFraKlient = fraKlient.readLine();
System.out.println("Tekst fra klient: " + setningFraKlient);
//Oversetter til store bokstaver:
oversattSetning = setningFraKlient.toUpperCase() + '\n';
System.out.println("Gjør om til store bokstaver, returnerer:" + oversattSetning);
//Sender store bokstaver i retur:
tilKlient.writeBytes(oversattSetning);
}
}
}在Java上的客户端程序:
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String args[]) throws Exception
{
String sentence="";
String modifiedSentence="";
//Oppretter forbindelse mot localhost på port 6789:
Socket clientSocket = new Socket("localhost", TCPServer.TCP_SERVER_PORT);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
//Spør bruker etter tekst:
System.out.print("Skriv inn tekst: ");
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
//Skriv ut tekst som store bokstaver:
System.out.println("\nTekst som store bokstaver: ");
System.out.println(modifiedSentence);
//Lukk socket og avslutt:
clientSocket.close();
}
}正如您在服务器代码中看到的,我使用"localhost“来测试程序,并使用端口号6789。
当我运行程序时,它就像预期的那样工作:
G 211
我启动WireShark并执行以下操作:
程序,输入字符串,发送它并收到上面描述的大写版本。
。
Wireshark中的过滤器行是空白的,那里没有过滤器。我能看到很多包裹进入Wireshark。但是我找不到任何使用端口编号6789的数据包,尽管我的应用程序正在使用它。我找不到任何名字叫Java的数据包。
简而言之,我找不到在我的应用程序上发送的数据包。为什么会这样?我怎样才能找到这个包?
另一件事是,尽管我删除了所有的浏览器缓存,但并不是所有我访问的网站都可以在WireShark上看到。我访问一个网站,但这在WireShark上是看不见的。我点击那个网站上指向维基百科的链接,但这也是看不见的。
但是我访问了stackoverflow.com --它在WireShark上是可见的,我得到了"301永久移动“的响应。
发布于 2020-08-31 11:32:32
在Linux上,您需要在回送接口上捕获数据包。在Windows上,您必须安装Npcap并选择Npcap环回滚接口。AFAIK Npcap附带Wireshark安装程序。
不确定您是否需要成为root ( Linux)或管理员( Windows)才能捕获通信量。
https://stackoverflow.com/questions/63669725
复制相似问题