当前位置:编程学习 > JAVA >>

新手求教一个关于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()是一个阻塞方法! --------------------编程问答--------------------
引用 1 楼 LB228988 的回复:
readLine()是一个阻塞方法!


果然是个阻塞方法
我看别人用这样的方式都可以,为什么这个程序就不行呢? --------------------编程问答-------------------- 客户端ps用发方法的时候没有缓冲 --------------------编程问答-------------------- flush下呢
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,