服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

一个socket服务的例子! 请高手指点无法捕捉的输出如何修改?


  一个socket服务的例子!
请高手指点无法捕捉的输出如何修改?
//服务端
package org.dyol.net;

import java.net.*;
import java.io.*;
import java.util.*;

public class console {

public static void main(string args[]){
if (args.length!=1)
throw new illegalargumentexception("unlawful number of args:user: console ");
new console(integer.parseint(args[0]));
}

public console(int port){
this.port = port;
try {
serversocket socket = new serversocket(port);
system.out.println("start service on "+port);
while(true){
new transmit(socket.accept()).start();
}
}catch (ioexception e){}
}

private class transmit extends thread {
private string sys = system.getproperty("os.name")+" "+system.getproperty("os.arch")+" "+system.getproperty("os.version");
private socket sock;
public transmit(socket sock){
this.sock = sock;
try {
input = new bufferedreader(new inputstreamreader(sock.getinputstream(),"gb2312"));
output = new printstream(sock.getoutputstream());
output.println(sys);
}catch(exception e){}
}
public void run(){
system.out.println("while(true){
try {
synchronized(output){
cmd = input.readline();
if( cmd == null ) break;
system.out.println("start command");
system.out.println("[ "+new date().tostring()+" receive command from : "+sock.getinetaddress()+" ]: "+cmd);
proc = runtime.getruntime().exec(cmd);
dis = new bufferedreader(new inputstreamreader(proc.getinputstream(),"gb2312"));
}
synchronized(output){
while((msg = dis.readline())!=null){
if(msg.equals("exit".tolowercase()))break;
output.println(msg);
}
}
system.out.println("end command");
}catch (ioexception e){
break;
}
}
system.out.println("end thread ---------------------->");
}
}

private int port = 520;
private bufferedreader input;
private printstream output;
private string cmd;
private process proc;
private string msg;
private bufferedreader dis ;

}

//客户端
import java.io.*;
import java.net.*;

public class client {
public static void main(string[] args){
if (args.length != 2)
throw new illegalargumentexception("wrong number of args");
string host = args[0];
int port = integer.parseint(args[1]);
new client(host, port);
}
public client(string host,int port){
try {
socket s = new socket(host, port);
final bufferedreader echo=new bufferedreader(new inputstreamreader(s.getinputstream(),"gb2312"));
printwriter ps = new printwriter(s.getoutputstream());
bufferedreader cmd = new bufferedreader(new inputstreamreader(system.in,"gb2312"));
final printwriter pis = new printwriter(system.out, true);
pis.println("connected to "+s.getinetaddress()+":" + s.getport());
thread t = new thread() {
public void run() {
char[] buffer = new char[1024];
int ch;
try {
while((ch = echo.read(buffer)) != -1) {
for(int i = 0; i < ch; i++) {
if (buffer[i] == '') pis.println();
else pis.print(buffer[i]);
}
pis.flush();
}
}catch (ioexception e){
pis.println(e);
}
pis.println("connection closed by server.");
system.exit(0);
}
};
t.setpriority(thread.currentthread().getpriority() + 1);
t.start();
string line;
while((line = cmd.readline()) != null) {
ps.print(line + "");
ps.flush();
}
s.close();
pis.println("connection closed by client.");
system.exit(0);
}catch (exception e) {}
}
}

扫描关注微信公众号