如何用java代码实现向远程IP地址的目标主机发送 带有SYN| ACK| FIN |URG| PSH 报文
标志的数据包
这个首先要把数据封装到一个类里边,如下面
package com_3;
public class MyData implements java.io.Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
public int getSYN() {
return SYN;
}
public void setSYN(int sYN) {
SYN = sYN;
}
public int getACK() {
return ACK;
}
public void setACK(int aCK) {
ACK = aCK;
}
public int getFIN() {
return FIN;
}
public void setFIN(int fIN) {
FIN = fIN;
}
public int getURG() {
return URG;
}
public void setURG(int uRG) {
URG = uRG;
}
public int getPSH() {
return PSH;
}
public void setPSH(int pSH) {
PSH = pSH;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
private int SYN;
private int ACK;
private int FIN;
private int URG;
private int PSH;
}
//当然要发送那么久应该有客户端代码和服务器端的代码
package com_3;
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Client();
}
public Client(){
try {
//创建套接字
Socket s=new Socket("localhost", 8888);
//获取输出流
ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream());
//创建数据包,根据不同情况创建不同的数据包
MyData mydata=new MyData();
mydata.setACK(aCK);
mydata.setFIN(fIN);
mydata.setPSH(pSH);
mydata.setSYN(sYN);
mydata.setURG(uRG);
//发送数据包
oos.writeObject(mydata);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
服务器端代码:
package com_3;
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public Server(){
try {
ServerSocket ss=new ServerSocket(8888);
//获取连接
Socket socket=ss.accept();
//获取数据流
ObjectInputStream ois=new ObjectInputStream(socket.getInputStream());
//取出数据
MyData mydata=(MyData) ois.readObject();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
对于客户端的Socket s=new Socket("localhost",8888);
以及服务器端的ServerSocket ss=new ServerSocket(8888);
这里的localhost修改为服务器Ip地址,端口号可以根据情况修改。
不知是否是你要的回答。