Socket与ServerSocket的问题
//服务器端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
/**
* @param args
*/
/**
* @param args
*/
public static void main(String[] args) {
String str="server hello first";
// TODO Auto-generated method stub
try {
ServerSocket ss=new ServerSocket(1258);
while(true){
Socket s=ss.accept();
System.out.println("connected");
PrintStream out=new PrintStream(s.getOutputStream());
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
// System.out.println("send:"+str);
out.write(str.getBytes());
str=in.readLine();
System.out.println("recieve:"+str);
out.close();
s.close();
in.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// String str=null;
// TODO Auto-generated method stub
Socket s;
try {
s = new Socket("127.0.0.1",1258);
System.out.println("connected");
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintStream out=new PrintStream(s.getOutputStream());
String str=in.readLine();
System.out.println("recieve:"+str);
str="client hello first";
// System.out.println("send:"+str);
out.write(str.getBytes());
out.close();
s.close();
in.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
不知道为什么不能正常收发消息。。。两边都阻塞住了。。。为什么呢??在JAVA1.4版本能正常却在JAVA1.5版本却不能。呵呵。。本人觉得原因是两边的管子包的太多了。。。更加上。。。管子实现了过滤器。。。。如果用ObjectOutputStream跟ObjectInputStream就没有问题了。。。。
正确的:
服务器:
import java.io.ObjectInputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
/**
* @param args
*/
/**
* @param args
*/
public static void main(String[] args) {
String str="server hello first";
// TODO Auto-generated method stub
try {
ServerSocket ss=new ServerSocket(1258);
while(true){
Socket s=ss.accept();
System.out.println("connected");
ObjectOutputStream out=new ObjectOutputStream(s.getOutputStream());
ObjectInputStream in=new ObjectInputStream(s.getInputStream());
// System.out.println("send:"+str);
out.writeUTF(str);
out.flush();
str=in.readUTF();
System.out.println("recieve:"+str);
out.close();
s.close();
in.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.ObjectInputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
//客户端
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// String str=null;
// TODO Auto-generated method stub
Socket s;
try {
s = new Socket("127.0.0.1",1258);
System.out.println("connected");
ObjectInputStream in=new ObjectInputStream(s.getInputStream());
ObjectOutputStream out=new ObjectOutputStream(s.getOutputStream());
String str=in.readUTF();
System.out.println("recieve:"+str);
str="client hello first";
// System.out.println("send:"+str);
out.writeUTF(str);
out.close();
s.close();
in.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}