本人初学SE 想循环找服务端的ip,在死循环发送 但是不会。 package socket;
import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;/**
* 聊天室客户端
* @author uid
*
*/
public class Client {
/*
* java.net.Socket 套接字
* Socket 封装了TCP协议传输数据的细节,使得
* 我们可以通过两条流的读写完成与远端计算机的数据交互
*/
private Socket socket;
/*
* 构造方法用来初始化客户端
*/ public Client(){
try {
/*
* 实例化Socket的过程就是连接服务端的
* 过程
* 参数1:服务器的IP地址
* 参数2:服务端程序打开端口
*
* 我们通过IP可以找到网络上的服务端所在计算,通过端口
* 可以找到该计算上运行的服务端应用程序从而建立连接
*/
System.out.println("正在连接服务器...");
socket=new Socket("localhost",8088);
//localhost 计算机本身的意思
System.out.println("已连接服务端!");
}catch(Exception e) {
e.printStackTrace();
}
}
/**
* 客户端开始工作的方法
*/
public void start() {
try {
Scanner s=new Scanner(System.in);
/*
* Socket提供的方法:
* OutputStream getOutputStream();
* 通过网络发送给远程计算机.
*/
OutputStream out=socket.getOutputStream();
OutputStreamWriter osw =new OutputStreamWriter(out,"utf-8");
BufferedWriter bw=new BufferedWriter(osw);
PrintWriter pw=new PrintWriter(bw,true);
System.out.println("请输入信息:"); while(true) {
String line=s.nextLine();
pw.println(line);
}
// String sta=null;
// while(!"exit".equals(sta)) {
// sta=s.nextLine();
// if(!"exit".equals(sta)) {
// pw.println(sta);
// }
// } } catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Client client =new Client();
client.start();
}
}
import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;/**
* 聊天室客户端
* @author uid
*
*/
public class Client {
/*
* java.net.Socket 套接字
* Socket 封装了TCP协议传输数据的细节,使得
* 我们可以通过两条流的读写完成与远端计算机的数据交互
*/
private Socket socket;
/*
* 构造方法用来初始化客户端
*/ public Client(){
try {
/*
* 实例化Socket的过程就是连接服务端的
* 过程
* 参数1:服务器的IP地址
* 参数2:服务端程序打开端口
*
* 我们通过IP可以找到网络上的服务端所在计算,通过端口
* 可以找到该计算上运行的服务端应用程序从而建立连接
*/
System.out.println("正在连接服务器...");
socket=new Socket("localhost",8088);
//localhost 计算机本身的意思
System.out.println("已连接服务端!");
}catch(Exception e) {
e.printStackTrace();
}
}
/**
* 客户端开始工作的方法
*/
public void start() {
try {
Scanner s=new Scanner(System.in);
/*
* Socket提供的方法:
* OutputStream getOutputStream();
* 通过网络发送给远程计算机.
*/
OutputStream out=socket.getOutputStream();
OutputStreamWriter osw =new OutputStreamWriter(out,"utf-8");
BufferedWriter bw=new BufferedWriter(osw);
PrintWriter pw=new PrintWriter(bw,true);
System.out.println("请输入信息:"); while(true) {
String line=s.nextLine();
pw.println(line);
}
// String sta=null;
// while(!"exit".equals(sta)) {
// sta=s.nextLine();
// if(!"exit".equals(sta)) {
// pw.println(sta);
// }
// } } catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Client client =new Client();
client.start();
}
}
while(true) {
String line=s.nextLine();
if(!"exit".equals(sta)) { //如果是exit就退出循环
break;
}
pw.println(line);
}
while(true) {
String line=s.nextLine();
for(String h : ipList) { //假设你要发送的ip在一个集合里
socket=new Socket(h,8088); //重新和服务器建立socket连接
OutputStream out=socket.getOutputStream();
OutputStreamWriter osw =new OutputStreamWriter(out,"utf-8");
BufferedWriter bw=new BufferedWriter(osw);
PrintWriter pw=new PrintWriter(bw,true);
pw.println(line);
}
}
我不知道你所说的后3位是啥意思。是192.168.1.***还是 192.*.*.*,反正ip4的话每个段就是0-255自己设置循环就行了。
这个我知道,最上面那个try ip和端口连接那怎么写?不会你上面写的是开始工作的那个方法对吧
你再client构造中加入参数啊 client(String ip )
主程序设定循环获取ip,然后传递参数启动client方法,在client中判断是否连接成功用isConnected()方法,true调用循环发送方法,false终止进程。
这里面的ip最后那个我循环它 它不是就是new了255个Socket么。怎么判断无效ip不会,就不会了我用我原来的代码改写直接报错。
你再client构造中加入参数啊 client(String ip )
主程序设定循环获取ip,然后传递参数启动client方法,在client中判断是否连接成功用isConnected()方法,true调用循环发送方法,false终止进程。
看不懂阿,socket=new Socket
这里面的ip最后那个我循环它 它不是就是new了255个Socket么。怎么判断无效ip不会,就不会了我用我原来的代码改写直接报错。自学太难了
其实你已经写了大部分了,我帮你简单的改了一下。
import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;/**
* 聊天室客户端
*
* @author uid
*
*/
public class Client {
/*
* java.net.Socket 套接字 Socket 封装了TCP协议传输数据的细节,使得 我们可以通过两条流的读写完成与远端计算机的数据交互
*/
private Socket socket=null;
/*
* 构造方法用来初始化客户端
*/ public boolean Clients(String ip,int port) {
try {
/*
* 实例化Socket的过程就是连接服务端的 过程 参数1:服务器的IP地址 参数2:服务端程序打开端口
*
* 我们通过IP可以找到网络上的服务端所在计算,通过端口 可以找到该计算上运行的服务端应用程序从而建立连接
*/
System.out.println("正在连接服务器...");
socket = new Socket(ip, port);
// localhost 计算机本身的意思
System.out.println("已连接服务端!");
return true;
} catch (Exception e) {
return false;
}
} /**
* 客户端开始工作的方法
*/
public void start() {
try {
Scanner s = new Scanner(System.in);
/*
* Socket提供的方法: OutputStream getOutputStream(); 通过网络发送给远程计算机.
*/
OutputStream out = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(out, "utf-8");
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw, true);
System.out.println("请输入信息:"); while (true) {
String line = s.nextLine();
pw.println(line);
}
// String sta=null;
// while(!"exit".equals(sta)) {
// sta=s.nextLine();
// if(!"exit".equals(sta)) {
// pw.println(sta);
// }
// } } catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
String s="192.168.0.";
Client client=new Client();
for(int i=0;i<256;i++) {
String ip=s+i;
if(client.Clients(ip, 8080)) {
client.start();
}
}
}
}
import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;/**
* 聊天室客户端
*
* @author uid
*
*/
public class Client {
private Socket socket=null;
public boolean Clients(String ip,int port) {
try {
System.out.println("正在连接服务器...");
socket = new Socket(ip, port);
System.out.println("已连接服务端!");
return true;
} catch (Exception e) {
return false;
}
} /**
* 客户端开始工作的方法
*/
public void start() {
try {
Scanner s = new Scanner(System.in);
/*
* Socket提供的方法: OutputStream getOutputStream(); 通过网络发送给远程计算机.
*/
OutputStream out = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(out, "utf-8");
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw, true);
System.out.println("请输入信息:"); while (true) {
String line = s.nextLine();
pw.println(line);
} } catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
String s="192.168.0.";
Client client=new Client();
for(int i=0;i<256;i++) {
String ip=s+i;
if(client.Clients(ip, 8080)) {
client.start();
}
}
}
}上面注释好像错位了,重新发一下。
但是对方服务器不承认你的连接你也是连接不上的,所以这个程序并没有什么意思,一般服务器都会防止垃圾信息的。