我想要做一个简单的客户端输入一条信息,然后发送至服务器端,然后服务器端再把该信息发回客户端并显示出来。程序有点问题,哪位将我的代码做改动。(这里没有用多线程了,因为只做了一个客户端,我现在只要了解这个问题就行了),不知道哪里出问题了,我觉得是流没有关闭,我在客户端把流关了后,服务器端能接到,但不能发回来。所以还是原样没改,同志们,帮我看哪里出问题指点一二。
Server端public class Server
{ public static void main(String[] args)
{
try
{
ServerSocket ss = new ServerSocket(9000);
boolean flag = false;
while (true)
{
System.out.println("wait for client connect");
Socket s = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(s
.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s
.getOutputStream()));
flag = true;
while(flag)
{
System.out.println("client connect");
String str = br.readLine(); //等侍读入消息
System.out.println("str = " + str); //打印出来消息
bw.write(str); //写回到客户端
}
}
}
catch (IOException e)
{
e.printStackTrace();
} }
}
Client端
public class Client
{ /**
* 从键盘输入一个字符串
*/
public static String getMessage()
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String message = in.next();
return message;
}
public static void main(String[] args)
{
try
{
boolean flag = false;
Socket s = new Socket("localhost",9000);
flag = true;
String message = ""; //要发送的消息
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
while(flag)
{
message = getMessage();
bw.write(message); //从键盘得到字符串后,将其写到服务器端
System.out.println(message);
String str = br.readLine(); //等待读入服务器写回的消息
System.out.println("back str" + str); //打印消息
}
bw.close();
br.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
Server端public class Server
{ public static void main(String[] args)
{
try
{
ServerSocket ss = new ServerSocket(9000);
boolean flag = false;
while (true)
{
System.out.println("wait for client connect");
Socket s = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(s
.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s
.getOutputStream()));
flag = true;
while(flag)
{
System.out.println("client connect");
String str = br.readLine(); //等侍读入消息
System.out.println("str = " + str); //打印出来消息
bw.write(str); //写回到客户端
}
}
}
catch (IOException e)
{
e.printStackTrace();
} }
}
Client端
public class Client
{ /**
* 从键盘输入一个字符串
*/
public static String getMessage()
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String message = in.next();
return message;
}
public static void main(String[] args)
{
try
{
boolean flag = false;
Socket s = new Socket("localhost",9000);
flag = true;
String message = ""; //要发送的消息
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
while(flag)
{
message = getMessage();
bw.write(message); //从键盘得到字符串后,将其写到服务器端
System.out.println(message);
String str = br.readLine(); //等待读入服务器写回的消息
System.out.println("back str" + str); //打印消息
}
bw.close();
br.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
String message = in.next();
in.next()有这个方法吗?我用的JDK1.4没有
后跟一个
bw.newLine();
发送一个换行
另外一头才可以用readLine()读取到。否则会因为没有换行符而阻塞在那里
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(4000);
boolean flag = false;
while (true) {
System.out.println("wait for client connect ");
Socket s = ss.accept();
System.out.println("client connect ");
BufferedReader br = new BufferedReader(new InputStreamReader(s
.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s
.getOutputStream()));
flag = true;
while (flag) {
String str = br.readLine(); //等侍读入消息
System.out.println("str = " + str); //打印出来消息
bw.write(str); //写回到客户端
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
} catch (IOException e) {
e.printStackTrace();
} }}public class Clien {
public static String getMessage() {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String message = ((Object) in).next();
return message;
} public static void main(String[] args) {
try {
boolean flag = false;
Socket s = new Socket("localhost", 4000);
flag = true;
String message = " "; //要发送的消息
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s
.getOutputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(s
.getInputStream()));
while (flag) {
message = getMessage();
bw.write(message); //从键盘得到字符串后,将其写到服务器端
System.out.println(message);
bw.newLine();
bw.flush();
String str = br.readLine(); //等待读入服务器写回的消息
System.out.println("back str " + str); //打印消息
}
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}