@苍之弦: 你看下我之前写的demo吧,不把socket关掉就可以一直发消息:
package tx;
import java.io.*;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1", 6666);
String str = "客户端请求连接";
while (true){
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
PrintWriter printWriter = new PrintWriter(outputStream, true);
printWriter.println(str);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
System.out.println(bufferedReader.readLine());
// socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package tx;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(6666);
Socket socket = null;
//等待套接字响应获取连接
while (true){
socket = serverSocket.accept();
new ServerThread(socket);
Thread.sleep(3000);
ServerThread.sendMessage("服务器发送消息---------------11111");
Thread.sleep(3000);
ServerThread.sendMessage("服务器发送消息---------------22222");
Thread.sleep(3000);
ServerThread.sendMessage("服务器发送消息---------------333");
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package tx;
import java.io.*;
import java.net.Socket;
public class ServerThread extends Thread {
private static Socket socket;
private InputStream inputStream;
private OutputStream outputStream;
public ServerThread(Socket aSocket) throws IOException {
this.socket = aSocket;
this.inputStream = aSocket.getInputStream();
this.outputStream = aSocket.getOutputStream();
this.start();
}
public void run(){
//输入流缓存
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String str;
try {
//读取一行数据
String strLine = bufferedReader.readLine();
System.out.println(strLine);
PrintWriter printWriter = new PrintWriter(outputStream, true);
printWriter.println("连接成功!");
// inputStream.close();
// outputStream.close();
// socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void sendMessage(String s) throws IOException {
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
printWriter.println("服务器发送消息:"+ s);
}
}