求助:socket!
我写了一个socket的程序,server每秒向client传艺个随机数,第一次启动,一切正常,然后,关了client(此时server仍工作),再开,就不能读取数据了。
源码如下,高手帮我看看:
server:
import java.net.*;
import java.io.*;
/**
*
* @author Administrator
*/
public class SocketPost extends Thread{
ServerSocket serverSocket;
Socket socket;
OutputStream os;
DataOutputStream dos;
PrintStream ps;
/** Creates a new instance of SocketPost */
public SocketPost() {
}
public synchronized void post(){
try{
serverSocket=new ServerSocket(7086);
socket=serverSocket.accept();
os=socket.getOutputStream();
ps=new PrintStream(os);
start();
}catch(Exception ex){
ex.printStackTrace();
}
}
public void run(){
try{
while(true){
ps.println((int)Math.round(Math.random()*100));
//System.out.println((int)Math.round(Math.random()*100));
sleep(1000);
}
}catch(Exception ex){
ex.printStackTrace();
}
}
public static void main(String[] args) {
// TODO code application logic here
SocketPost sp=new SocketPosr();
sr.post();
}
}
client:
import java.net.*;
import java.io.*;
/**
*
* @author Administrator
*/
public class SocketReceive extends Thread{
Socket socket;
BufferedReader bufferedReader;
/** Creates a new instance of SocketReceive */
public SocketReceive() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
SocketReceive sr=new SocketReceive();
sr.receive();
}
public synchronized void receive(){
try{
socket=new Socket("192.168.0.102",7086);
bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
start();
}catch(Exception ex){
ex.printStackTrace();
}
}
public void run(){
try{
while(true){
System.out.println(bufferedReader.readLine());
sleep(1000);
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
到底是什么原因造成的?