我对java socket不是很懂.
现在有这么一种情况,不知道可不可行?现在局域网上有一台电脑,它上面有一个未知程序在监听某个端口;我能不能用java socket给此台机器此端口发送一个字符串,然后再接受那个未知程序发给我的一个字串?如果可行,最好有示例程序啊.!!
现在有这么一种情况,不知道可不可行?现在局域网上有一台电脑,它上面有一个未知程序在监听某个端口;我能不能用java socket给此台机器此端口发送一个字符串,然后再接受那个未知程序发给我的一个字串?如果可行,最好有示例程序啊.!!
import java.io.*;public class Client {
static final int PORT=8090;
public static void main(String[] args) throws IOException {
InetAddress addr =InetAddress.getByName("192.168.1.22");
Socket socket = new Socket(addr, PORT);
try {
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter( new BufferedWriter(
new OutputStreamWriter( socket.getOutputStream())), true);
for (int i = 0; i < 10; i++) {
out.println("你好! " + i); //发送
String str = in.readLine(); //接收
System.out.println(str); //将收到的写出来
try{
Thread.sleep(500);
}catch(Exception ex){
ex.printStackTrace();
}
}
try{
Thread.sleep(10000);
}catch(Exception e){
e.printStackTrace();
}
//out.println("END"); //发送关闭指令
} finally {
System.out.println("关闭ing...");
socket.close(); //记得料理后事,就是把socket关闭
}
}
}
client sender 端口= server receiver 端口
client receiver 端口 = server sender 端口
楼上的,怎么用telnet测呢
import java.io.*;public class Client {
static final int PORT=8090;
public static void main(String[] args) throws IOException {
InetAddress addr =InetAddress.getByName("192.168.1.22");
Socket socket = new Socket(addr, PORT);
try {
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter( new BufferedWriter(
new OutputStreamWriter( socket.getOutputStream())), true);
for (int i = 0; i < 10; i++) {
out.println("你好! " + i); //发送
String str = in.readLine(); //接收
System.out.println(str); //将收到的写出来
try{
Thread.sleep(500);
}catch(Exception ex){
ex.printStackTrace();
}
}
try{
Thread.sleep(10000);
}catch(Exception e){
e.printStackTrace();
}
//out.println("END"); //发送关闭指令
} finally {
System.out.println("关闭ing...");
socket.close(); //记得料理后事,就是把socket关闭
}
}
}
直接到网卡驱动层识别截取数据包有c++,c等都可以,如果你实在要java,只有jni又或许网上有开源项目
client receiver 端口 = server sender 端口
查看一下,server端是否在指定端口处于监听状态,还有就是客户端是否连接正确
我用上面的示例程序做测试
out.println("XXX" + i); //发送
String str = in.readLine(); //接收结果是,发送可以成功,在服务器的log里面可以看到我发送的字符串,但发送之后就停了,迟迟得不到回应.而且我用netstat看状态,连接已经建立了.咋回事啊,郁闷.
发送成功后(此时收不到回应),我用netstat看客户端端口状态,发现
发现和服务器的端口已建立连接,下面还多了一行
netbios-ssn端口 的信息,但状态是 time_wait
难道与这个有关?
以保证服务器端的ServerSocket的监听端口还可以监听别人的连接