客服端和服务器刚开始的时候都能正常运行,当客服端向服务器端成功发送一个消息后,服务器端能正常显示客服端发送的消息,但是在此之后整个程序就停在那里了,不能再往下运行。
大家给点帮助!!(代码附在后边)
谢谢!
大家给点帮助!!(代码附在后边)
谢谢!
解决方案 »
- A a = new A(); a.method(); 和 IA a = new A(); a.method();两者在jvm里运行时有何区别
- 请问怎样在canvas中插入jpg
- 快来找错呀
- 大家看看 急急急 :jsp 开发tomcat,sql server (我在旁等)
- 请教一个Unicode的小问题
- 正则表达式怎么匹配这样的[.*]{0, 1}
- 如何实现无限撤消的功能?
- 一个文件传输的问题,请教各位高手!
- 如何显示BLOB类型字段的内容
- java中如何在线程中传多个参数
- jasperreports 在程序里面能输出到打印机,在tomcat里面不能,为什么?
- JAVA的interface观念与C++多重继承的比较
import java.net.*;
import java.io.*;
import java.lang.*;public class client implements Runnable{
public static void main(String args[]) {
if(args.length<1)
{
System.out.println("you forget the name of the server");
System.out.println("see also: myclient aaa");
System.exit(1);
}
Socket s;
BufferedReader input;
BufferedReader in;
OutputStreamWriter out;
String s1;
int length;
char[] buffer = new char[2048];
String s2;
try {
//创建socket对象
s = new Socket(args[0],4321);
while (true) {
//获得输入输出流
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new OutputStreamWriter(s.getOutputStream());
//获得键盘输入
input = new BufferedReader(new InputStreamReader(System.in));
//向服务器发送信息
if ((s1 = input.readLine()).length()!=0) {
out.write(s1);
out.flush();
}
//读取服务器端的信息
//if ((s1 = in.readLine()).length()!=0){
// System.out.println(s1);
//}
while((length= in.read(buffer))!=-1) {
s2 = new String(buffer,0,length);
System.out.println(2);
}
out.close();
in.close();
s.close();
}
//关闭数据流
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
import java.net.*;
import java.io.*;
import java.lang.*;
public class server
{
public static void main(String args[])
{
ServerSocket server;
Socket so;
BufferedReader in;
OutputStreamWriter out;
int length;
char[] buffer = new char[2048];
String s;
try {
server = new ServerSocket(4321);
while(true) {
//等待连接
so = server.accept();
//建立连接后创建输入输出流
in = new BufferedReader(new InputStreamReader(so.getInputStream()));
out = new OutputStreamWriter(so.getOutputStream());
//在输出流写入信息
//out.write("hello");
//out.flush();
//显示客服端信息
while((length= in.read(buffer))!=-1) {
s = new String(buffer,0,length);
System.out.println(s);
}
out.close();
in.close();
so.close();
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Thread input = new InputThread(connection.getInputStream());
input.start();
Thread output = new OutputThread(connection.getOutputStream());
output.start();
try{
input.join();
output.join();
}class InputThread extends Thread{
public void run(){
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new OutputStreamWriter(s.getOutputStream());
//获得键盘输入
input = new BufferedReader(new InputStreamReader(System.in));
//向服务器发送信息
if ((s1 = input.readLine()).length()!=0) {
out.write(s1);
out.flush();
}
//读取服务器端的信息
//if ((s1 = in.readLine()).length()!=0){
// System.out.println(s1);
//}
while((length= in.read(buffer))!=-1) {
s2 = new String(buffer,0,length);
System.out.println(2);
}
out.close();
in.close();
s.close();
}class OutputThread extends Thread{
类似client 显示数据
}}
while((length= in.read(buffer))!=-1) {
s2 = new String(buffer,0,length);
System.out.println(2);
}
这个一直等待做什么用?
client 一直等SERVER 发完消息, server close后 in.read才会等于-1 ,才会client close
server 一直等close 发完消息 ,client close 后in.read才会等于-1 ,才会server close
两边永远都等不到 -1 的时候,