网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  一个socket服务的例子! 请高手指点无法捕捉的输出如何修改?     
  文章作者:未知  文章来源:水木森林  
  查看:103次  录入:管理员--2007-11-17  
 
  一个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) {}
}
}
 
 
上一篇: 一个jdbc-odbc桥的字符集参数的例子    下一篇: 一个socket服务器样板程
  相关文档
程序员:j2ee初学者需要理解的五个问题 12-10
db2 j2ee开发成本收益分析(一) 11-17
纯java周历的写法 11-17
java语言中的链表和双向链表的实现方法 11-16
如何使用jmeter测试java项目 11-17
jbuilder集成开发环境介绍 11-17
技术分析——dwr让ajax如此简单(图) 11-17
java程序员 sun降低开源java系统开发门槛 03-27
struts中文帮助 11-17
java调试教程--jikes概述 11-17
java语言可能快速演化, eclipse疲于跟从 11-16
.net中掌握windows窗体间数据交互(1) 11-17
comparemode 属性 11-16
实例讲解在jsp开发中的对象和范围属性 11-30
定制 bugzilla 进行项目管理 11-17
jdom读数据库生成xml及读xml插入数据库 11-17
用java.util.*的linkedlist实现stack 11-17
java编程中异常处理的优劣观 11-17
java类中类属性和对象属性的初始化顺序 11-17
java变量类型间的相互转换 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息