新手求教一个关于socket的问题,早上还行的代码下班回来一调又不行了,要吐血了都
这是client的代码段:package NetworkTest;
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args){
int port = 10005;
String host = "127.0.0.1";
// while(true){
try {
Socket socket = new Socket(host,port);
InputStream in = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
OutputStream out = socket.getOutputStream();
PrintStream ps = new PrintStream(out);
String s = "client";
ps.print(s);
String test = null;
while((test = br.readLine()) != null){
System.out.println("br:"+test);
}
in.close();
br.close();
ps.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是server的代码:
package NetworkTest;
import java.io.*;
import java.net.*;
public class Server {
private String word;
private int port;
public Server(String word,int port){
this.word = word;
this.port = port;
}
public void handleThread(){
ServerThread serThread = new ServerThread(this.word,this.port);
new Thread(serThread).start();
}
public void handle(){
try {
ServerSocket serverSocket = new ServerSocket(this.port);
Socket socket = serverSocket.accept();
InputStream in = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String str = br.readLine();
OutputStream out = socket.getOutputStream();
PrintStream ps = new PrintStream(out);
ps.println(this.word+str);
ps.close();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
String word = "hello";
int port = 10005;
// Server server = new Server(word,port);
// server.handleThread();
// server.handle();
try {
ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept();
InputStream in = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String str = br.readLine();
OutputStream out = socket.getOutputStream();
PrintStream ps = new PrintStream(out);
ps.println(word+str);
ps.close();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
server的代码大家只有看main函数就可以了。
将client和server都执行起来之后我发现client什么都没有收到。
将client停下来的时候标红的代码出错,这个地方有什么问题吗?早上上班前还行的,我晕死。 socket --------------------编程问答-------------------- readLine()是一个阻塞方法! --------------------编程问答--------------------
果然是个阻塞方法
我看别人用这样的方式都可以,为什么这个程序就不行呢? --------------------编程问答-------------------- 客户端ps用发方法的时候没有缓冲 --------------------编程问答-------------------- flush下呢
补充:Java , Java SE