好乱啊。
stbu.append(tter+"\r\t");试试
stbu.append(tter+"\r\t");试试
解决方案 »
- 百度点击器求思路
- java swing 图片叠加问题?
- double型转string
- 很及很及很及.快快快!!!!!!!!!!!!!!!!!!!!!!!!!!
- JNI调用问题!!!无法调用DLL!!!立即结帐
- classloader在编译时报non-varargs call of varargs method with inexact argument错.但可以正确执行.
- 请问如何去掉JTree中结点左边的连线?
- java 关于游标 的问题 数据源的添加问题??
- 敢问各位大侠!!!!(数组问题),编译通过,不能执行,晕!!
- 对jbuilder熟悉的大虾请帮忙
- 如何关闭DOS界面?
- java 图的题目,超时啊,帮忙看看啊
String tter=null;
StringBuffer stbu=new StringBuffer();
while ((tter=buff.readLine())!=null)
{
stbu.append(tter).append("\n"); //这样就行啦
System.out.println(tter);
}
out.println(stbu.toString());
while((tt=bf.readLine())!=null)
{
System.out.println(tt);
}
System.out.println("hello");
所有语句都以原来的格式打印出来看,但是,一直运行不到hello,也就是说一直在循环!没出来!
package JustForTest;
import java.io.*;
import java.net.*;
public class NetServer {
ServerSocket serverSocket=null; private Socket socket=null;
Runtime rt=Runtime.getRuntime();
private PrintWriter getWriter(Socket socket)throws IOException
{
OutputStream out=socket.getOutputStream();
PrintWriter pw=new PrintWriter(out,true);
return pw;
}
private BufferedReader getReader(Socket socket)throws IOException
{
InputStream in=socket.getInputStream();
BufferedReader bf=new BufferedReader(new InputStreamReader(in));
return bf;
}
public void service()throws IOException
{
serverSocket=new ServerSocket(7324);
socket=serverSocket.accept();
PrintWriter out=getWriter(socket);
BufferedReader bf=getReader(socket);
out.println("Welcome to you!!!");
String comd=null;
//String str=null;
while ((comd=bf.readLine())!=null)
{
System.out.println(comd);
String[] comdArray={"cmd.exe","/C",comd};
Process pro=rt.exec(comdArray);
try{
pro.waitFor();
}catch(InterruptedException e)
{
}
BufferedReader buff=new BufferedReader(new InputStreamReader(pro.getInputStream()));
String tter=null;
StringBuffer stbu=new StringBuffer();
while ((tter=buff.readLine())!=null)
{
stbu.append(tter).append("\n");
System.out.println(tter);
}
out.println(stbu.toString());
out.flush();
}
serverSocket.close();
socket.close(); }
public static void main(String[] args)throws Exception
{
new NetServer().service();
}}package Cluster;
import java.io.*;
import java.net.*;
/**
* Created by junfeng on 13-12-25.
*/
public class NetClient { private String host="localhost";
private int port=7324;
private Socket socket=null;
private PrintWriter getWriter(Socket socket)throws IOException
{
OutputStream out=socket.getOutputStream();
PrintWriter pw=new PrintWriter(out,true);
return pw;
}
private BufferedReader getReader(Socket socket)throws IOException
{
InputStream in=socket.getInputStream();
BufferedReader bf=new BufferedReader(new InputStreamReader(in));
return bf;
}
public void talk()throws IOException
{
socket=new Socket(host,port);
PrintWriter pw = getWriter(socket);
BufferedReader bf=getReader(socket);
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
System.out.println(bf.readLine());
//System.out.println(bf.readLine());
String str=null;
while((str=buf.readLine())!=null)
{
pw.println(str);
String tt=bf.readLine();
while((tt=bf.readLine())!=null)
{
System.out.println(tt);
}
System.out.println("hello");//这句是测试的,一直没运行到! ???
}
socket.close();
}
public static void main(String[] args)throws IOException
{
new NetClient().talk(); }
}
但是我想利用字符流,就出现了上面的问题!也不知道为什么?
其实那个是因为readLine在没有数据的时候会阻塞(你用的是阻塞socket)。而不是像读文件一样,没数据返回null。
因此使用一个结束符号来表示已经接受完数据。当然这种仅限于一问一答式的结构。
package JustForTest;import java.io.*;
import java.net.*;public class NetServer {
ServerSocket serverSocket = null; private Socket socket = null;
Runtime rt = Runtime.getRuntime(); private PrintWriter getWriter(Socket socket) throws IOException {
OutputStream out = socket.getOutputStream();
PrintWriter pw = new PrintWriter(out, true);
return pw;
} private BufferedReader getReader(Socket socket) throws IOException {
InputStream in = socket.getInputStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
return bf;
} public void service() throws IOException {
serverSocket = new ServerSocket(7324);
socket = serverSocket.accept();
PrintWriter out = getWriter(socket);
BufferedReader bf = getReader(socket);
out.println("Welcome to you!!!");
String comd = null; // String str=null;
while ((comd = bf.readLine()) != null) {
System.out.println("Execute : "+comd);
String[] comdArray = { "cmd.exe", "/C", comd }; Process pro = rt.exec(comdArray);
try {
pro.waitFor();
} catch (InterruptedException e) {
}
BufferedReader buff = new BufferedReader(new InputStreamReader(pro.getInputStream()));
String tter = null;
StringBuffer stbu = new StringBuffer();
stbu.append("1、这里只测试多行数据发送\n");
stbu.append("2、所以我就不管你数据来源了\n");
stbu.append("3、具体的数据是否正确你另外测试\n");
stbu.append(">>END<<\n"); //结束符
/*
while ((tter = buff.readLine()) != null) {
stbu.append(tter).append("\n");
System.out.println(tter);
}
*/
System.out.println("Send : "+stbu.toString());
out.println(stbu.toString());
out.flush();
}
serverSocket.close();
socket.close(); } public static void main(String[] args) throws Exception {
new NetServer().service();
}}
package Cluster;import java.io.*;
import java.net.*;/**
* Created by junfeng on 13-12-25.
*/
public class NetClient { private String host = "localhost";
private int port = 7324;
private Socket socket = null; private PrintWriter getWriter(Socket socket) throws IOException {
OutputStream out = socket.getOutputStream();
PrintWriter pw = new PrintWriter(out, true);
return pw;
} private BufferedReader getReader(Socket socket) throws IOException {
InputStream in = socket.getInputStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(in));
return bf;
} public void talk() throws IOException {
socket = new Socket(host, port);
PrintWriter pw = getWriter(socket);
BufferedReader bf = getReader(socket);
System.out.println(bf.readLine());
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String str = null;
while ((str = buf.readLine()) != null) {
pw.println(str);
String tt = null;
while ((tt = bf.readLine()) != null) {
if(tt.indexOf(">>END<<")==0){
break;
}
System.out.println(tt);
}
System.out.println("hello");//可以le
}
socket.close();
} public static void main(String[] args) throws IOException {
new NetClient().talk(); }
}
你有兴趣也可以看看NIO,非阻塞的网络通信。
你有兴趣也可以看看NIO,非阻塞的网络通信。
非常感谢!运行了一下,可以用了!