我想要做一个简单的客户端输入一条信息,然后发送至服务器端,然后服务器端再把该信息发回客户端并显示出来。程序有点问题,哪位将我的代码做改动。(这里没有用多线程了,因为只做了一个客户端,我现在只要了解这个问题就行了),不知道哪里出问题了,我觉得是流没有关闭,我在客户端把流关了后,服务器端能接到,但不能发回来。所以还是原样没改,同志们,帮我看哪里出问题指点一二。
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();
}
}
}
解决方案 »
- 利用反射调用可变参数函数的问题
- 复杂el表达式求助
- 我写了一个小小的聊天系统 可是当客户端向服务端说话的时候抛出很多异常 问题应该出在服务端,可是我怎么看都看不出来 希望大哥哥大姐姐帮我看看啊
- 求救!!!一个空指针异常问题!!在线等!!
- 如何实现两个程序同时监听一个端口?
- 编译JAVA3中的例程出现com.bruceeckel.simpletest connot be resolved?
- 请大家看看这个程序
- 用过 UltraEdit 的请进!
- 请问applet中validate()是起什么作用?
- java中的lookfeel如何使用
- 请教一个主键生成
- 求助,17的args.length是否会编译或运行时错误?
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();
}
}
}